ZQuest Classic Coverage Report


Directory: src/
File: src/parser/ByteCode.h
Date: 2024-05-02 02:29:04
Exec Total Coverage
Lines: 356 3890 9.2%
Functions: 298 3016 9.9%
Branches: 207 4370 4.7%

Line Branch Exec Source
1 #ifndef BYTECODE_H
2 #define BYTECODE_H
3
4 #include "ASTVisitors.h"
5 #include "DataStructs.h"
6 #include "Compiler.h"
7 #include "zsyssimple.h"
8 #include "zasm/defines.h"
9
10 #include <memory>
11 #include <sstream>
12 #include <vector>
13 #include <string>
14
15 /*
16 SP - stack pointer
17 D4 - stack frame pointer
18 D6 - stack frame offset accumulator
19 D2 - expression accumulator #1
20 D3 - expression accumulator #2
21 D0 - array index accumulator
22 D1 - secondary array index accumulator
23 D5 - pure SETR sink
24 */
25 #define INDEX rINDEX
26 #define INDEX2 rINDEX2
27 #define EXP1 rEXP1
28 #define EXP2 rEXP2
29 #define SFRAME rSFRAME
30 #define NUL rNUL
31 #define SFTEMP rSFTEMP
32 #define WHAT_NO_7 rWHAT_NO_7
33
34 //{ INTERNAL ARRAYS
35
36 #define INTARR_OFFS 65536
37 #define INTARR_SCREEN_NPC (65536+0)
38 #define INTARR_SCREEN_ITEMSPR (65536+1)
39 #define INTARR_SCREEN_LWPN (65536+2)
40 #define INTARR_SCREEN_EWPN (65536+3)
41 #define INTARR_SCREEN_FFC (65536+4)
42 #define INTARR_SCREEN_PORTALS (65536+5)
43 #define INTARR_SAVPRTL (65536+6)
44
45 //} END INTERNAL ARRAYS
46
47 int32_t StringToVar(std::string var);
48
49 namespace ZScript
50 {
51 class LiteralArgument;
52 class CompareArgument;
53 class VarArgument;
54 class LabelArgument;
55 class GlobalArgument;
56 class StringArgument;
57 class VectorArgument;
58
59 class ArgumentVisitor
60 {
61 public:
62 2527885 virtual void caseLiteral(LiteralArgument&, void *){}
63 279285 virtual void caseCompare(CompareArgument&, void *){}
64 3516 virtual void caseString(StringArgument&, void *){}
65 621 virtual void caseVector(VectorArgument&, void *){}
66 5820372 virtual void caseVar(VarArgument&, void *){}
67 virtual void caseLabel(LabelArgument&, void *){}
68 210157 virtual void caseGlobal(GlobalArgument&, void *){}
69 722 void execute(std::vector<std::shared_ptr<Opcode>>& vec, void* param)
70 {
71
2/2
✓ Branch 0 taken 6526591 times.
✓ Branch 1 taken 722 times.
6527313 for (auto it = vec.begin(); it != vec.end(); ++it)
72 {
73 6526591 (*it)->execute(*this, param);
74 6526591 }
75 722 }
76 317 void execute(std::vector<std::shared_ptr<Opcode>> const& vec, void* param)
77 {
78
2/2
✓ Branch 0 taken 33336 times.
✓ Branch 1 taken 317 times.
33653 for (auto it = vec.cbegin(); it != vec.cend(); ++it)
79 {
80 33336 (*it)->execute(*this, param);
81 33336 }
82 317 }
83 1039 virtual ~ArgumentVisitor() {}
84 };
85
86 class Argument
87 {
88 public:
89 virtual std::string toString() const = 0;
90 virtual void execute(ArgumentVisitor &host, void *param)=0;
91 virtual Argument* clone() const = 0;
92 1368866 virtual ~Argument() {}
93 11320 bool operator==(Argument const& other) const
94 {
95
1/2
✓ Branch 0 taken 11320 times.
✗ Branch 1 not taken.
11320 return toString() == other.toString();
96 }
97 };
98
99 class LiteralArgument : public Argument
100 {
101 public:
102 254464 LiteralArgument(int32_t Value) : value(Value) {}
103 LiteralArgument(ScriptType Value) : value((int)Value) {}
104 std::string toString() const;
105 2527885 void execute(ArgumentVisitor &host, void *param)
106 {
107 2527885 host.caseLiteral(*this, param);
108 2527885 }
109 14706 Argument* clone() const
110 {
111
1/2
✓ Branch 0 taken 14706 times.
✗ Branch 1 not taken.
14706 return new LiteralArgument(value);
112 }
113 277 bool operator==(int val) const
114 {
115 277 return val == value;
116 }
117 bool operator==(zfix const& val) const
118 {
119 return val.getZLong() == value;
120 }
121 int32_t value;
122 };
123 inline bool operator==(int val, LiteralArgument const& arg)
124 {
125 return arg == val;
126 }
127 inline bool operator==(zfix const& val, LiteralArgument const& arg)
128 {
129 return arg == val;
130 }
131
132 class CompareArgument : public Argument
133 {
134 public:
135 27668 CompareArgument(int32_t Value) : value(Value) {}
136 std::string toString() const;
137 279285 void execute(ArgumentVisitor &host, void *param)
138 {
139 279285 host.caseCompare(*this, param);
140 279285 }
141 1179 Argument* clone() const
142 {
143
1/2
✓ Branch 0 taken 1179 times.
✗ Branch 1 not taken.
1179 return new CompareArgument(value);
144 }
145 int32_t value;
146 };
147
148 class StringArgument : public Argument
149 {
150 public:
151
1/2
✓ Branch 0 taken 1768 times.
✗ Branch 1 not taken.
1768 StringArgument(std::string const& Value) : value(Value) {}
152 std::string toString() const;
153 3516 void execute(ArgumentVisitor &host, void *param)
154 {
155 3516 host.caseString(*this, param);
156 3516 }
157 190 Argument* clone() const
158 {
159
1/2
✓ Branch 0 taken 190 times.
✗ Branch 1 not taken.
190 return new StringArgument(value);
160 }
161 bool operator==(string const& str) const
162 {
163 return str == value;
164 }
165 private:
166 std::string value;
167 };
168 inline bool operator==(string const& val, StringArgument const& arg)
169 {
170 return arg == val;
171 }
172
173 class VectorArgument : public Argument
174 {
175 public:
176
1/2
✓ Branch 0 taken 169 times.
✗ Branch 1 not taken.
169 VectorArgument(std::vector<int32_t> const& Value) : value(Value) {}
177 std::string toString() const;
178 621 void execute(ArgumentVisitor &host, void *param)
179 {
180 621 host.caseVector(*this, param);
181 621 }
182 20 Argument* clone() const
183 {
184
1/2
✓ Branch 0 taken 20 times.
✗ Branch 1 not taken.
20 return new VectorArgument(value);
185 }
186 bool operator==(vector<int32_t> const& vec) const
187 {
188 return vec == value;
189 }
190 private:
191 std::vector<int32_t> value;
192 };
193 inline bool operator==(vector<int32_t> const& val, VectorArgument const& arg)
194 {
195 return arg == val;
196 }
197
198 std::string VarToString(int32_t ID);
199
200 class VarArgument : public Argument
201 {
202 public:
203 998077 VarArgument(int32_t id) : ID(id) {}
204 std::string toString() const;
205 5820372 void execute(ArgumentVisitor &host, void *param)
206 {
207 5820372 host.caseVar(*this,param);
208 5820372 }
209 192561 Argument* clone() const
210 {
211
1/2
✓ Branch 0 taken 192561 times.
✗ Branch 1 not taken.
192561 return new VarArgument(ID);
212 }
213 int32_t ID;
214 };
215
216 class GlobalArgument : public Argument
217 {
218 public:
219 3624 GlobalArgument(int32_t id) : ID(id) {}
220 std::string toString() const;
221 210157 void execute(ArgumentVisitor &host, void *param)
222 {
223 210157 host.caseGlobal(*this,param);
224 210157 }
225 1319 Argument* clone() const
226 {
227
1/2
✓ Branch 0 taken 1319 times.
✗ Branch 1 not taken.
1319 return new GlobalArgument(ID);
228 }
229 private:
230 int32_t ID;
231 };
232
233 class LabelArgument : public Argument
234 {
235 public:
236 83671 LabelArgument(int32_t id, bool altstr = false) : ID(id), altstr(altstr), haslineno(false) {}
237 std::string toString() const;
238 729660 void execute(ArgumentVisitor &host, void *param)
239 {
240 729660 host.caseLabel(*this,param);
241 729660 }
242 3914 Argument* clone() const
243 {
244
1/2
✓ Branch 0 taken 3914 times.
✗ Branch 1 not taken.
3914 return new LabelArgument(ID, altstr);
245 }
246 1610 void setID(int32_t newid)
247 {
248 1610 ID = newid;
249 1610 }
250 733832 int32_t getID()
251 {
252 733832 return ID;
253 }
254 3490 void setLineNo(int32_t l)
255 {
256 3490 haslineno=true;
257 3490 lineno=l;
258 3490 }
259 bool operator==(int lbl) const
260 {
261 return lbl == ID;
262 }
263 private:
264 int32_t ID;
265 int32_t lineno;
266 bool haslineno;
267 bool altstr;
268 };
269 inline bool operator==(int val, LabelArgument const& arg)
270 {
271 return arg == val;
272 }
273
274 class UnaryOpcode : public Opcode
275 {
276 public:
277 487492 UnaryOpcode(Argument *A) : a(A) {}
278 487235 ~UnaryOpcode()
279 487235 {
280
2/2
✓ Branch 0 taken 485834 times.
✓ Branch 1 taken 1401 times.
487235 delete a;
281 487235 }
282 40186 Argument* getArgument()
283 {
284 40186 return a;
285 }
286 14524 Argument const* getArgument() const
287 {
288 14524 return a;
289 }
290 1401 Argument* takeArgument()
291 {
292 1401 auto tmp = a;
293 1401 a = nullptr;
294 1401 return tmp;
295 }
296 2893835 void execute(ArgumentVisitor &host, void *param)
297 {
298 2893835 a->execute(host, param);
299 2893835 }
300 protected:
301 Argument *a;
302 };
303
304 class RawOpcode : public Opcode
305 {
306 public:
307
1/2
✓ Branch 0 taken 33302 times.
✗ Branch 1 not taken.
33302 RawOpcode(std::string str) : str(str) {}
308 51272 void execute(ArgumentVisitor &host, void *param)
309 {
310 51272 }
311 521 std::string toString() const
312 {
313 521 return str;
314 }
315 11150 Opcode* clone() const
316 {
317
2/6
✓ Branch 0 taken 11150 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 11150 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
11150 return new RawOpcode(str);
318 }
319 std::string str;
320 };
321
322 class BinaryOpcode : public Opcode
323 {
324 public:
325 438286 BinaryOpcode(Argument *A, Argument *B) : a(A), b(B) {}
326 438127 ~BinaryOpcode()
327 438127 {
328
2/2
✓ Branch 0 taken 438055 times.
✓ Branch 1 taken 72 times.
438127 delete a;
329
2/2
✓ Branch 0 taken 438098 times.
✓ Branch 1 taken 29 times.
438127 delete b;
330 438127 }
331 10930 Argument* getFirstArgument()
332 {
333 10930 return a;
334 }
335 18745 Argument const* getFirstArgument() const
336 {
337 18745 return a;
338 }
339 19212 Argument* getSecondArgument()
340 {
341 19212 return b;
342 }
343 18745 Argument const* getSecondArgument() const
344 {
345 18745 return b;
346 }
347 72 Argument* takeFirstArgument()
348 {
349 72 auto tmp = a;
350 72 a = nullptr;
351 72 return tmp;
352 }
353 29 Argument* takeSecondArgument()
354 {
355 29 auto tmp = b;
356 29 b = nullptr;
357 29 return tmp;
358 }
359 3328401 void execute(ArgumentVisitor &host, void *param)
360 {
361 3328401 a->execute(host, param);
362 3328401 b->execute(host, param);
363 3328401 }
364 protected:
365 Argument *a;
366 Argument *b;
367 };
368
369 class TernaryOpcode : public Opcode
370 {
371 public:
372 2293 TernaryOpcode(Argument *A, Argument *B, Argument *C) : a(A), b(B), c(C) {}
373 2293 ~TernaryOpcode()
374 2293 {
375
1/2
✓ Branch 0 taken 2293 times.
✗ Branch 1 not taken.
2293 delete a;
376
1/2
✓ Branch 0 taken 2293 times.
✗ Branch 1 not taken.
2293 delete b;
377
1/2
✓ Branch 0 taken 2293 times.
✗ Branch 1 not taken.
2293 delete c;
378 2293 }
379 Argument* getFirstArgument()
380 {
381 return a;
382 }
383 234 Argument const* getFirstArgument() const
384 {
385 234 return a;
386 }
387 Argument* getSecondArgument()
388 {
389 return b;
390 }
391 234 Argument const* getSecondArgument() const
392 {
393 234 return b;
394 }
395 Argument* getThirdArgument()
396 {
397 return c;
398 }
399 234 Argument const* getThirdArgument() const
400 {
401 234 return c;
402 }
403 Argument* takeFirstArgument()
404 {
405 auto tmp = a;
406 a = nullptr;
407 return tmp;
408 }
409 Argument* takeSecondArgument()
410 {
411 auto tmp = b;
412 b = nullptr;
413 return tmp;
414 }
415 Argument* takeThirdArgument()
416 {
417 auto tmp = c;
418 c = nullptr;
419 return tmp;
420 }
421 6953 void execute(ArgumentVisitor &host, void *param)
422 {
423 6953 a->execute(host, param);
424 6953 b->execute(host, param);
425 6953 c->execute(host, param);
426 6953 }
427 protected:
428 Argument *a;
429 Argument *b;
430 Argument *c;
431 };
432
433 class OSetTrue : public UnaryOpcode
434 {
435 public:
436 OSetTrue(Argument *A) : UnaryOpcode(A) {}
437 std::string toString() const;
438 Opcode* clone() const
439 {
440 return new OSetTrue(a->clone());
441 }
442 };
443
444 class OSetTrueI : public UnaryOpcode
445 {
446 public:
447 OSetTrueI(Argument *A) : UnaryOpcode(A) {}
448 std::string toString() const;
449 Opcode* clone() const
450 {
451 return new OSetTrueI(a->clone());
452 }
453 };
454
455 class OSetFalse : public UnaryOpcode
456 {
457 public:
458 OSetFalse(Argument *A) : UnaryOpcode(A) {}
459 std::string toString() const;
460 Opcode* clone() const
461 {
462 return new OSetFalse(a->clone());
463 }
464 };
465
466 class OSetFalseI : public UnaryOpcode
467 {
468 public:
469 OSetFalseI(Argument *A) : UnaryOpcode(A) {}
470 std::string toString() const;
471 Opcode* clone() const
472 {
473 return new OSetFalseI(a->clone());
474 }
475 };
476
477 class OSetMore : public UnaryOpcode
478 {
479 public:
480 OSetMore(Argument *A) : UnaryOpcode(A) {}
481 std::string toString() const;
482 Opcode* clone() const
483 {
484 return new OSetMore(a->clone());
485 }
486 };
487
488 class OSetMoreI : public UnaryOpcode
489 {
490 public:
491 OSetMoreI(Argument *A) : UnaryOpcode(A) {}
492 std::string toString() const;
493 Opcode* clone() const
494 {
495 return new OSetMoreI(a->clone());
496 }
497 };
498
499 class OSetLess : public UnaryOpcode
500 {
501 public:
502 OSetLess(Argument *A) : UnaryOpcode(A) {}
503 std::string toString() const;
504 Opcode* clone() const
505 {
506 return new OSetLess(a->clone());
507 }
508 };
509
510 class OSetLessI : public UnaryOpcode
511 {
512 public:
513 OSetLessI(Argument *A) : UnaryOpcode(A) {}
514 std::string toString() const;
515 Opcode* clone() const
516 {
517 return new OSetLessI(a->clone());
518 }
519 };
520
521 class OSetImmediate : public BinaryOpcode
522 {
523 public:
524 27719 OSetImmediate(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
525 std::string toString() const;
526 1586 Opcode* clone() const
527 {
528
3/6
✓ Branch 0 taken 1586 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1586 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1586 times.
✗ Branch 5 not taken.
1586 return new OSetImmediate(a->clone(),b->clone());
529 }
530 };
531
532 class OSetRegister : public BinaryOpcode
533 {
534 public:
535 149336 OSetRegister(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
536 std::string toString() const;
537 45132 Opcode* clone() const
538 {
539
3/6
✓ Branch 0 taken 45132 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 45132 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 45132 times.
✗ Branch 5 not taken.
45132 return new OSetRegister(a->clone(),b->clone());
540 }
541 };
542
543 class OSetObject : public BinaryOpcode
544 {
545 public:
546 14 OSetObject(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
547 std::string toString() const;
548 7 Opcode* clone() const
549 {
550
3/6
✓ Branch 0 taken 7 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 7 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 7 times.
✗ Branch 5 not taken.
7 return new OSetObject(a->clone(),b->clone());
551 }
552 };
553
554 class OReadPODArrayR : public BinaryOpcode
555 {
556 public:
557 2932 OReadPODArrayR(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
558 std::string toString() const;
559 315 Opcode* clone() const
560 {
561
3/6
✓ Branch 0 taken 315 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 315 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 315 times.
✗ Branch 5 not taken.
315 return new OReadPODArrayR(a->clone(),b->clone());
562 }
563 };
564
565 class OReadPODArrayI : public BinaryOpcode
566 {
567 public:
568 991 OReadPODArrayI(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
569 std::string toString() const;
570 331 Opcode* clone() const
571 {
572
3/6
✓ Branch 0 taken 331 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 331 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 331 times.
✗ Branch 5 not taken.
331 return new OReadPODArrayI(a->clone(),b->clone());
573 }
574 };
575
576 class OWritePODArrayRR : public BinaryOpcode
577 {
578 public:
579 1052 OWritePODArrayRR(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
580 std::string toString() const;
581 129 Opcode* clone() const
582 {
583
3/6
✓ Branch 0 taken 129 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 129 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 129 times.
✗ Branch 5 not taken.
129 return new OWritePODArrayRR(a->clone(),b->clone());
584 }
585 };
586
587 class OWritePODArrayRI : public BinaryOpcode
588 {
589 public:
590 OWritePODArrayRI(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
591 std::string toString() const;
592 Opcode* clone() const
593 {
594 return new OWritePODArrayRI(a->clone(),b->clone());
595 }
596 };
597
598 class OWritePODArrayIR : public BinaryOpcode
599 {
600 public:
601 2255 OWritePODArrayIR(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
602 std::string toString() const;
603 179 Opcode* clone() const
604 {
605
3/6
✓ Branch 0 taken 179 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 179 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 179 times.
✗ Branch 5 not taken.
179 return new OWritePODArrayIR(a->clone(),b->clone());
606 }
607 };
608
609 class OWritePODArrayII : public BinaryOpcode
610 {
611 public:
612 OWritePODArrayII(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
613 std::string toString() const;
614 Opcode* clone() const
615 {
616 return new OWritePODArrayII(a->clone(),b->clone());
617 }
618 };
619 class OWritePODString : public BinaryOpcode
620 {
621 public:
622 1762 OWritePODString(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
623 std::string toString() const;
624 187 Opcode* clone() const
625 {
626
3/6
✓ Branch 0 taken 187 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 187 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 187 times.
✗ Branch 5 not taken.
187 return new OWritePODString(a->clone(),b->clone());
627 }
628 };
629 class OWritePODArray : public BinaryOpcode
630 {
631 public:
632 132 OWritePODArray(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
633 std::string toString() const;
634 4 Opcode* clone() const
635 {
636
3/6
✓ Branch 0 taken 4 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 4 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 4 times.
✗ Branch 5 not taken.
4 return new OWritePODArray(a->clone(),b->clone());
637 }
638 };
639 class OConstructClass : public BinaryOpcode
640 {
641 public:
642 28 OConstructClass(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
643 std::string toString() const;
644 12 Opcode* clone() const
645 {
646
3/6
✓ Branch 0 taken 12 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 12 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 12 times.
✗ Branch 5 not taken.
12 return new OConstructClass(a->clone(),b->clone());
647 }
648 };
649
650 class OMarkTypeClass : public UnaryOpcode
651 {
652 public:
653 9 OMarkTypeClass(Argument *A) : UnaryOpcode(A) {}
654 std::string toString() const;
655 4 Opcode* clone() const
656 {
657
2/4
✓ Branch 0 taken 4 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 4 times.
✗ Branch 3 not taken.
4 return new OMarkTypeClass(a->clone());
658 }
659 };
660
661 class OReadObject : public BinaryOpcode
662 {
663 public:
664 80 OReadObject(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
665 std::string toString() const;
666 40 Opcode* clone() const
667 {
668
3/6
✓ Branch 0 taken 40 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 40 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 40 times.
✗ Branch 5 not taken.
40 return new OReadObject(a->clone(),b->clone());
669 }
670 };
671 class OWriteObject : public BinaryOpcode
672 {
673 public:
674 23 OWriteObject(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
675 std::string toString() const;
676 11 Opcode* clone() const
677 {
678
3/6
✓ Branch 0 taken 11 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 11 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 11 times.
✗ Branch 5 not taken.
11 return new OWriteObject(a->clone(),b->clone());
679 }
680 };
681 class OFreeObject : public UnaryOpcode
682 {
683 public:
684 4 OFreeObject(Argument *A) : UnaryOpcode(A) {}
685 std::string toString() const;
686 2 Opcode* clone() const
687 {
688
2/4
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
2 return new OFreeObject(a->clone());
689 }
690 };
691 class OOwnObject : public UnaryOpcode
692 {
693 public:
694 OOwnObject(Argument *A) : UnaryOpcode(A) {}
695 std::string toString() const;
696 Opcode* clone() const
697 {
698 return new OOwnObject(a->clone());
699 }
700 };
701 class ODestructor : public UnaryOpcode
702 {
703 public:
704 6 ODestructor(Argument *A) : UnaryOpcode(A) {}
705 std::string toString() const;
706 3 Opcode* clone() const
707 {
708
2/4
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
3 return new ODestructor(a->clone());
709 }
710 };
711 class OGlobalObject : public UnaryOpcode
712 {
713 public:
714 OGlobalObject(Argument *A) : UnaryOpcode(A) {}
715 std::string toString() const;
716 Opcode* clone() const
717 {
718 return new OGlobalObject(a->clone());
719 }
720 };
721 class OObjOwnBitmap : public BinaryOpcode
722 {
723 public:
724 OObjOwnBitmap(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
725 std::string toString() const;
726 Opcode* clone() const
727 {
728 return new OObjOwnBitmap(a->clone(),b->clone());
729 }
730 };
731 class OObjOwnPaldata : public BinaryOpcode
732 {
733 public:
734 OObjOwnPaldata(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
735 std::string toString() const;
736 Opcode* clone() const
737 {
738 return new OObjOwnPaldata(a->clone(),b->clone());
739 }
740 };
741 class OObjOwnFile : public BinaryOpcode
742 {
743 public:
744 OObjOwnFile(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
745 std::string toString() const;
746 Opcode* clone() const
747 {
748 return new OObjOwnFile(a->clone(),b->clone());
749 }
750 };
751 class OObjOwnDir : public BinaryOpcode
752 {
753 public:
754 OObjOwnDir(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
755 std::string toString() const;
756 Opcode* clone() const
757 {
758 return new OObjOwnDir(a->clone(),b->clone());
759 }
760 };
761 class OObjOwnStack : public BinaryOpcode
762 {
763 public:
764 OObjOwnStack(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
765 std::string toString() const;
766 Opcode* clone() const
767 {
768 return new OObjOwnStack(a->clone(),b->clone());
769 }
770 };
771 class OObjOwnRNG : public BinaryOpcode
772 {
773 public:
774 OObjOwnRNG(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
775 std::string toString() const;
776 Opcode* clone() const
777 {
778 return new OObjOwnRNG(a->clone(),b->clone());
779 }
780 };
781 class OObjOwnClass : public BinaryOpcode
782 {
783 public:
784 OObjOwnClass(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
785 std::string toString() const;
786 Opcode* clone() const
787 {
788 return new OObjOwnClass(a->clone(),b->clone());
789 }
790 };
791 class OObjOwnArray : public BinaryOpcode
792 {
793 public:
794 OObjOwnArray(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
795 std::string toString() const;
796 Opcode* clone() const
797 {
798 return new OObjOwnArray(a->clone(),b->clone());
799 }
800 };
801 class OQuitNoDealloc : public Opcode
802 {
803 public:
804 OQuitNoDealloc() : Opcode() {}
805 std::string toString() const;
806 Opcode* clone() const
807 {
808 return new OQuitNoDealloc();
809 }
810 };
811 class OSetCustomCursor : public Opcode
812 {
813 public:
814 std::string toString() const;
815 Opcode* clone() const
816 {
817 return new OSetCustomCursor();
818 }
819 };
820 class ONPCCanPlace : public Opcode
821 {
822 public:
823 std::string toString() const;
824 Opcode* clone() const
825 {
826 return new ONPCCanPlace();
827 }
828 };
829 class ONPCIsFlickerFrame : public Opcode
830 {
831 public:
832 std::string toString() const;
833 Opcode* clone() const
834 {
835 return new ONPCIsFlickerFrame();
836 }
837 };
838 class OItemGetDispName : public UnaryOpcode
839 {
840 public:
841 OItemGetDispName(Argument *A) : UnaryOpcode(A) {}
842 std::string toString() const;
843 Opcode* clone() const
844 {
845 return new OItemGetDispName(a->clone());
846 }
847 };
848 class OItemSetDispName : public UnaryOpcode
849 {
850 public:
851 OItemSetDispName(Argument *A) : UnaryOpcode(A) {}
852 std::string toString() const;
853 Opcode* clone() const
854 {
855 return new OItemSetDispName(a->clone());
856 }
857 };
858 class OItemGetShownName : public UnaryOpcode
859 {
860 public:
861 OItemGetShownName(Argument *A) : UnaryOpcode(A) {}
862 std::string toString() const;
863 Opcode* clone() const
864 {
865 return new OItemGetShownName(a->clone());
866 }
867 };
868 class OHeroMoveXY : public Opcode
869 {
870 public:
871 std::string toString() const;
872 Opcode* clone() const
873 {
874 return new OHeroMoveXY();
875 }
876 };
877 class OHeroCanMoveXY : public Opcode
878 {
879 public:
880 std::string toString() const;
881 Opcode* clone() const
882 {
883 return new OHeroCanMoveXY();
884 }
885 };
886 class OHeroLiftRelease : public Opcode
887 {
888 public:
889 std::string toString() const;
890 Opcode* clone() const
891 {
892 return new OHeroLiftRelease();
893 }
894 };
895 class OHeroLiftGrab : public Opcode
896 {
897 public:
898 std::string toString() const;
899 Opcode* clone() const
900 {
901 return new OHeroLiftGrab();
902 }
903 };
904 class OHeroIsFlickerFrame : public Opcode
905 {
906 public:
907 std::string toString() const;
908 Opcode* clone() const
909 {
910 return new OHeroIsFlickerFrame();
911 }
912 };
913 class OLoadPortalRegister : public UnaryOpcode
914 {
915 public:
916 OLoadPortalRegister(Argument *A) : UnaryOpcode(A) {}
917 std::string toString() const;
918 Opcode* clone() const
919 {
920 return new OLoadPortalRegister(a->clone());
921 }
922 };
923 class OCreatePortal : public Opcode
924 {
925 public:
926 std::string toString() const;
927 Opcode* clone() const
928 {
929 return new OCreatePortal();
930 }
931 };
932 class OLoadSavPortalRegister : public UnaryOpcode
933 {
934 public:
935 OLoadSavPortalRegister(Argument *A) : UnaryOpcode(A) {}
936 std::string toString() const;
937 Opcode* clone() const
938 {
939 return new OLoadSavPortalRegister(a->clone());
940 }
941 };
942 class OCreateSavPortal : public Opcode
943 {
944 public:
945 std::string toString() const;
946 Opcode* clone() const
947 {
948 return new OCreateSavPortal();
949 }
950 };
951 class OPortalRemove : public Opcode
952 {
953 public:
954 std::string toString() const;
955 Opcode* clone() const
956 {
957 return new OPortalRemove();
958 }
959 };
960 class OSavedPortalRemove : public Opcode
961 {
962 public:
963 std::string toString() const;
964 Opcode* clone() const
965 {
966 return new OSavedPortalRemove();
967 }
968 };
969 class OSavedPortalGenerate : public Opcode
970 {
971 public:
972 std::string toString() const;
973 Opcode* clone() const
974 {
975 return new OSavedPortalGenerate();
976 }
977 };
978 class OUseSpritePortal : public UnaryOpcode
979 {
980 public:
981 OUseSpritePortal(Argument *A) : UnaryOpcode(A) {}
982 std::string toString() const;
983 Opcode* clone() const
984 {
985 return new OUseSpritePortal(a->clone());
986 }
987 };
988 class OHeroMoveAtAngle : public Opcode
989 {
990 public:
991 std::string toString() const;
992 Opcode* clone() const
993 {
994 return new OHeroMoveAtAngle();
995 }
996 };
997 class OHeroCanMoveAtAngle : public Opcode
998 {
999 public:
1000 std::string toString() const;
1001 Opcode* clone() const
1002 {
1003 return new OHeroCanMoveAtAngle();
1004 }
1005 };
1006 class OHeroMove : public Opcode
1007 {
1008 public:
1009 std::string toString() const;
1010 Opcode* clone() const
1011 {
1012 return new OHeroMove();
1013 }
1014 };
1015 class OHeroCanMove : public Opcode
1016 {
1017 public:
1018 std::string toString() const;
1019 Opcode* clone() const
1020 {
1021 return new OHeroCanMove();
1022 }
1023 };
1024 class ODrawLightCircle : public Opcode
1025 {
1026 public:
1027 std::string toString() const;
1028 Opcode* clone() const
1029 {
1030 return new ODrawLightCircle();
1031 }
1032 };
1033 class ODrawLightSquare : public Opcode
1034 {
1035 public:
1036 std::string toString() const;
1037 Opcode* clone() const
1038 {
1039 return new ODrawLightSquare();
1040 }
1041 };
1042 class ODrawLightCone : public Opcode
1043 {
1044 public:
1045 std::string toString() const;
1046 Opcode* clone() const
1047 {
1048 return new ODrawLightCone();
1049 }
1050 };
1051 class OPeek : public UnaryOpcode
1052 {
1053 public:
1054 64 OPeek(Argument *A) : UnaryOpcode(A) {}
1055 std::string toString() const;
1056 Opcode* clone() const
1057 {
1058 return new OPeek(a->clone());
1059 }
1060 };
1061 class OPeekAtImmediate : public BinaryOpcode
1062 {
1063 public:
1064 OPeekAtImmediate(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
1065 std::string toString() const;
1066 Opcode* clone() const
1067 {
1068 return new OPeekAtImmediate(a->clone(),b->clone());
1069 }
1070 };
1071 class OMakeVargArray : public Opcode
1072 {
1073 public:
1074 std::string toString() const;
1075 Opcode* clone() const
1076 {
1077 return new OMakeVargArray();
1078 }
1079 };
1080 class OPrintfArr : public Opcode
1081 {
1082 public:
1083 std::string toString() const;
1084 Opcode* clone() const
1085 {
1086 return new OPrintfArr();
1087 }
1088 };
1089 class OSPrintfArr : public Opcode
1090 {
1091 public:
1092 std::string toString() const;
1093 Opcode* clone() const
1094 {
1095 return new OSPrintfArr();
1096 }
1097 };
1098 class OCurrentItemID : public Opcode
1099 {
1100 public:
1101 std::string toString() const;
1102 Opcode* clone() const
1103 {
1104 return new OCurrentItemID();
1105 }
1106 };
1107 class OArrayPush : public Opcode
1108 {
1109 public:
1110 std::string toString() const;
1111 Opcode* clone() const
1112 {
1113 return new OArrayPush();
1114 }
1115 };
1116 class OArrayPop : public Opcode
1117 {
1118 public:
1119 std::string toString() const;
1120 Opcode* clone() const
1121 {
1122 return new OArrayPop();
1123 }
1124 };
1125 class OLoadSubscreenDataRV : public BinaryOpcode
1126 {
1127 public:
1128 OLoadSubscreenDataRV(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
1129 std::string toString() const;
1130 Opcode* clone() const
1131 {
1132 return new OLoadSubscreenDataRV(a->clone(),b->clone());
1133 }
1134 };
1135 class OSwapSubscrV : public UnaryOpcode
1136 {
1137 public:
1138 OSwapSubscrV(Argument *A) : UnaryOpcode(A) {}
1139 std::string toString() const;
1140 Opcode* clone() const
1141 {
1142 return new OSwapSubscrV(a->clone());
1143 }
1144 };
1145 class OGetSubscreenName : public UnaryOpcode
1146 {
1147 public:
1148 OGetSubscreenName(Argument *A) : UnaryOpcode(A) {}
1149 std::string toString() const;
1150 Opcode* clone() const
1151 {
1152 return new OGetSubscreenName(a->clone());
1153 }
1154 };
1155 class OSetSubscreenName : public UnaryOpcode
1156 {
1157 public:
1158 OSetSubscreenName(Argument *A) : UnaryOpcode(A) {}
1159 std::string toString() const;
1160 Opcode* clone() const
1161 {
1162 return new OSetSubscreenName(a->clone());
1163 }
1164 };
1165
1166
1167 class OAddImmediate : public BinaryOpcode
1168 {
1169 public:
1170 4748 OAddImmediate(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
1171 std::string toString() const;
1172 633 Opcode* clone() const
1173 {
1174
3/6
✓ Branch 0 taken 633 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 633 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 633 times.
✗ Branch 5 not taken.
633 return new OAddImmediate(a->clone(),b->clone());
1175 }
1176 };
1177
1178 class OAddRegister : public BinaryOpcode
1179 {
1180 public:
1181 9429 OAddRegister(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
1182 std::string toString() const;
1183 297 Opcode* clone() const
1184 {
1185
3/6
✓ Branch 0 taken 297 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 297 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 297 times.
✗ Branch 5 not taken.
297 return new OAddRegister(a->clone(),b->clone());
1186 }
1187 };
1188
1189 class OSubImmediate : public BinaryOpcode
1190 {
1191 public:
1192 3421 OSubImmediate(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
1193 std::string toString() const;
1194 151 Opcode* clone() const
1195 {
1196
3/6
✓ Branch 0 taken 151 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 151 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 151 times.
✗ Branch 5 not taken.
151 return new OSubImmediate(a->clone(),b->clone());
1197 }
1198 };
1199
1200 class OSubImmediate2 : public BinaryOpcode
1201 {
1202 public:
1203 294 OSubImmediate2(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
1204 std::string toString() const;
1205 35 Opcode* clone() const
1206 {
1207
3/6
✓ Branch 0 taken 35 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 35 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 35 times.
✗ Branch 5 not taken.
35 return new OSubImmediate2(a->clone(),b->clone());
1208 }
1209 };
1210
1211 class OSubRegister : public BinaryOpcode
1212 {
1213 public:
1214 5458 OSubRegister(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
1215 std::string toString() const;
1216 136 Opcode* clone() const
1217 {
1218
3/6
✓ Branch 0 taken 136 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 136 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 136 times.
✗ Branch 5 not taken.
136 return new OSubRegister(a->clone(),b->clone());
1219 }
1220 };
1221
1222 class OMultImmediate : public BinaryOpcode
1223 {
1224 public:
1225 1205 OMultImmediate(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
1226 std::string toString() const;
1227 136 Opcode* clone() const
1228 {
1229
3/6
✓ Branch 0 taken 136 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 136 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 136 times.
✗ Branch 5 not taken.
136 return new OMultImmediate(a->clone(),b->clone());
1230 }
1231 };
1232
1233 class OMultRegister : public BinaryOpcode
1234 {
1235 public:
1236 1186 OMultRegister(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
1237 std::string toString() const;
1238 80 Opcode* clone() const
1239 {
1240
3/6
✓ Branch 0 taken 80 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 80 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 80 times.
✗ Branch 5 not taken.
80 return new OMultRegister(a->clone(),b->clone());
1241 }
1242 };
1243
1244 class ODivImmediate : public BinaryOpcode
1245 {
1246 public:
1247 549 ODivImmediate(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
1248 std::string toString() const;
1249 66 Opcode* clone() const
1250 {
1251
3/6
✓ Branch 0 taken 66 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 66 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 66 times.
✗ Branch 5 not taken.
66 return new ODivImmediate(a->clone(),b->clone());
1252 }
1253 };
1254
1255 class ODivImmediate2 : public BinaryOpcode
1256 {
1257 public:
1258 73 ODivImmediate2(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
1259 std::string toString() const;
1260 1 Opcode* clone() const
1261 {
1262
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 return new ODivImmediate2(a->clone(),b->clone());
1263 }
1264 };
1265
1266 class ODivRegister : public BinaryOpcode
1267 {
1268 public:
1269 241 ODivRegister(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
1270 std::string toString() const;
1271 10 Opcode* clone() const
1272 {
1273
3/6
✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 10 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
10 return new ODivRegister(a->clone(),b->clone());
1274 }
1275 };
1276
1277 class OCompareImmediate : public BinaryOpcode
1278 {
1279 public:
1280 34232 OCompareImmediate(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
1281 std::string toString() const;
1282 2167 Opcode* clone() const
1283 {
1284
3/6
✓ Branch 0 taken 2167 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2167 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2167 times.
✗ Branch 5 not taken.
2167 return new OCompareImmediate(a->clone(),b->clone());
1285 }
1286 };
1287
1288 class OCompareImmediate2 : public BinaryOpcode
1289 {
1290 public:
1291 OCompareImmediate2(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
1292 std::string toString() const;
1293 Opcode* clone() const
1294 {
1295 return new OCompareImmediate2(a->clone(),b->clone());
1296 }
1297 };
1298
1299 class OCompareRegister : public BinaryOpcode
1300 {
1301 public:
1302 8115 OCompareRegister(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
1303 std::string toString() const;
1304 150 Opcode* clone() const
1305 {
1306
3/6
✓ Branch 0 taken 150 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 150 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 150 times.
✗ Branch 5 not taken.
150 return new OCompareRegister(a->clone(),b->clone());
1307 }
1308 };
1309
1310 class OInternalStringCompare : public BinaryOpcode
1311 {
1312 public:
1313 OInternalStringCompare(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
1314 std::string toString() const;
1315 Opcode* clone() const
1316 {
1317 return new OInternalStringCompare(a->clone(),b->clone());
1318 }
1319 };
1320
1321 class OInternalInsensitiveStringCompare : public BinaryOpcode
1322 {
1323 public:
1324 OInternalInsensitiveStringCompare(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
1325 std::string toString() const;
1326 Opcode* clone() const
1327 {
1328 return new OInternalInsensitiveStringCompare(a->clone(),b->clone());
1329 }
1330 };
1331
1332 class OWaitframe : public Opcode
1333 {
1334 public:
1335 std::string toString() const;
1336 Opcode* clone() const
1337 {
1338 return new OWaitframe();
1339 }
1340 };
1341
1342 class OWaitframes : public UnaryOpcode
1343 {
1344 public:
1345 OWaitframes(Argument *A) : UnaryOpcode(A) {}
1346 std::string toString() const;
1347 Opcode* clone() const
1348 {
1349 return new OWaitframes(a->clone());
1350 }
1351 };
1352
1353 class OWaitdraw : public Opcode
1354 {
1355 public:
1356 std::string toString() const;
1357 Opcode* clone() const
1358 {
1359 return new OWaitdraw();
1360 }
1361 };
1362
1363 class OWaitTo : public BinaryOpcode
1364 {
1365 public:
1366 OWaitTo(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
1367 std::string toString() const;
1368 Opcode* clone() const
1369 {
1370 return new OWaitTo(a->clone(),b->clone());
1371 }
1372 };
1373
1374 class OWaitEvent : public Opcode
1375 {
1376 public:
1377 std::string toString() const;
1378 Opcode* clone() const
1379 {
1380 return new OWaitEvent();
1381 }
1382 };
1383
1384 class ONoOp : public Opcode
1385 {
1386 public:
1387 70839 ONoOp() = default;
1388 67929 ONoOp(int lbl) : ONoOp()
1389 {
1390
1/2
✓ Branch 0 taken 67929 times.
✗ Branch 1 not taken.
67929 setLabel(lbl);
1391 67929 }
1392 std::string toString() const;
1393 2899 Opcode* clone() const
1394 {
1395
1/2
✓ Branch 0 taken 2899 times.
✗ Branch 1 not taken.
2899 return new ONoOp();
1396 }
1397 };
1398
1399 class OCastBoolI : public UnaryOpcode
1400 {
1401 public:
1402 3506 OCastBoolI(Argument *A) : UnaryOpcode(A) {}
1403 std::string toString() const;
1404 620 Opcode* clone() const
1405 {
1406
2/4
✓ Branch 0 taken 620 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 620 times.
✗ Branch 3 not taken.
620 return new OCastBoolI(a->clone());
1407 }
1408 };
1409
1410 class OCastBoolF : public UnaryOpcode
1411 {
1412 public:
1413 OCastBoolF(Argument *A) : UnaryOpcode(A) {}
1414 std::string toString() const;
1415 Opcode* clone() const
1416 {
1417 return new OCastBoolF(a->clone());
1418 }
1419 };
1420
1421 class OGotoImmediate : public UnaryOpcode
1422 {
1423 public:
1424 39693 OGotoImmediate(Argument *A) : UnaryOpcode(A) {}
1425 std::string toString() const;
1426 1397 Opcode* clone() const
1427 {
1428
2/4
✓ Branch 0 taken 1397 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1397 times.
✗ Branch 3 not taken.
1397 return new OGotoImmediate(a->clone());
1429 }
1430 };
1431
1432 class OGotoTrueImmediate: public UnaryOpcode
1433 {
1434 public:
1435 23202 OGotoTrueImmediate(Argument *A) : UnaryOpcode(A) {}
1436 std::string toString() const;
1437 1070 Opcode* clone() const
1438 {
1439
2/4
✓ Branch 0 taken 1070 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1070 times.
✗ Branch 3 not taken.
1070 return new OGotoTrueImmediate(a->clone());
1440 }
1441 };
1442
1443 class OGotoFalseImmediate: public UnaryOpcode
1444 {
1445 public:
1446 817 OGotoFalseImmediate(Argument *A) : UnaryOpcode(A) {}
1447 std::string toString() const;
1448 68 Opcode* clone() const
1449 {
1450
2/4
✓ Branch 0 taken 68 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 68 times.
✗ Branch 3 not taken.
68 return new OGotoFalseImmediate(a->clone());
1451 }
1452 };
1453
1454 class OGotoMoreImmediate : public UnaryOpcode
1455 {
1456 public:
1457 OGotoMoreImmediate(Argument *A) : UnaryOpcode(A) {}
1458 std::string toString() const;
1459 Opcode* clone() const
1460 {
1461 return new OGotoMoreImmediate(a->clone());
1462 }
1463 };
1464
1465 class OGotoLessImmediate : public UnaryOpcode
1466 {
1467 public:
1468 OGotoLessImmediate(Argument *A) : UnaryOpcode(A) {}
1469 std::string toString() const;
1470 Opcode* clone() const
1471 {
1472 return new OGotoLessImmediate(a->clone());
1473 }
1474 };
1475
1476 class OPushRegister : public UnaryOpcode
1477 {
1478 public:
1479 143244 OPushRegister(Argument *A) : UnaryOpcode(A) {}
1480 std::string toString() const;
1481 6283 Opcode* clone() const
1482 {
1483
2/4
✓ Branch 0 taken 6283 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 6283 times.
✗ Branch 3 not taken.
6283 return new OPushRegister(a->clone());
1484 }
1485 };
1486
1487 class OPushImmediate : public UnaryOpcode
1488 {
1489 public:
1490 17212 OPushImmediate(Argument *A) : UnaryOpcode(A) {}
1491 std::string toString() const;
1492 1501 Opcode* clone() const
1493 {
1494
2/4
✓ Branch 0 taken 1501 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1501 times.
✗ Branch 3 not taken.
1501 return new OPushImmediate(a->clone());
1495 }
1496 };
1497
1498 class OPopRegister : public UnaryOpcode
1499 {
1500 public:
1501 244856 OPopRegister(Argument *A) : UnaryOpcode(A) {}
1502 std::string toString() const;
1503 62219 Opcode* clone() const
1504 {
1505
2/4
✓ Branch 0 taken 62219 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 62219 times.
✗ Branch 3 not taken.
62219 return new OPopRegister(a->clone());
1506 }
1507 };
1508
1509 class OPopArgsRegister : public BinaryOpcode
1510 {
1511 public:
1512 12261 OPopArgsRegister(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
1513 std::string toString() const;
1514 277 Opcode* clone() const
1515 {
1516
3/6
✓ Branch 0 taken 277 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 277 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 277 times.
✗ Branch 5 not taken.
277 return new OPopArgsRegister(a->clone(),b->clone());
1517 }
1518 };
1519
1520 class OPushArgsRegister : public BinaryOpcode
1521 {
1522 public:
1523 3 OPushArgsRegister(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
1524 std::string toString() const;
1525 Opcode* clone() const
1526 {
1527 return new OPushArgsRegister(a->clone(),b->clone());
1528 }
1529 };
1530
1531 class OPushArgsImmediate : public BinaryOpcode
1532 {
1533 public:
1534 196 OPushArgsImmediate(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
1535 std::string toString() const;
1536 Opcode* clone() const
1537 {
1538 return new OPushArgsImmediate(a->clone(),b->clone());
1539 }
1540 };
1541
1542 class OPushVargV : public UnaryOpcode
1543 {
1544 public:
1545 72 OPushVargV(Argument *A) : UnaryOpcode(A) {}
1546 std::string toString() const;
1547 13 Opcode* clone() const
1548 {
1549
2/4
✓ Branch 0 taken 13 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 13 times.
✗ Branch 3 not taken.
13 return new OPushVargV(a->clone());
1550 }
1551 };
1552
1553 class OPushVargR : public UnaryOpcode
1554 {
1555 public:
1556 1151 OPushVargR(Argument *A) : UnaryOpcode(A) {}
1557 std::string toString() const;
1558 98 Opcode* clone() const
1559 {
1560
2/4
✓ Branch 0 taken 98 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 98 times.
✗ Branch 3 not taken.
98 return new OPushVargR(a->clone());
1561 }
1562 };
1563
1564 class OPushVargsV : public BinaryOpcode
1565 {
1566 public:
1567 OPushVargsV(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
1568 std::string toString() const;
1569 Opcode* clone() const
1570 {
1571 return new OPushVargsV(a->clone(),b->clone());
1572 }
1573 };
1574
1575 class OPushVargsR : public BinaryOpcode
1576 {
1577 public:
1578 OPushVargsR(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
1579 std::string toString() const;
1580 Opcode* clone() const
1581 {
1582 return new OPushVargsR(a->clone(),b->clone());
1583 }
1584 };
1585
1586 class OLoadIndirect : public BinaryOpcode
1587 {
1588 public:
1589 OLoadIndirect(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
1590 std::string toString() const;
1591 Opcode* clone() const
1592 {
1593 return new OLoadIndirect(a->clone(),b->clone());
1594 }
1595 };
1596
1597 class OStoreIndirect : public BinaryOpcode
1598 {
1599 public:
1600 OStoreIndirect(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
1601 std::string toString() const;
1602 Opcode* clone() const
1603 {
1604 return new OStoreIndirect(a->clone(),b->clone());
1605 }
1606 };
1607
1608 class OLoadDirect : public BinaryOpcode
1609 {
1610 public:
1611 OLoadDirect(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
1612 std::string toString() const;
1613 Opcode* clone() const
1614 {
1615 return new OLoadDirect(a->clone(),b->clone());
1616 }
1617 };
1618 class OStoreDirect : public BinaryOpcode
1619 {
1620 public:
1621 OStoreDirect(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
1622 std::string toString() const;
1623 Opcode* clone() const
1624 {
1625 return new OStoreDirect(a->clone(),b->clone());
1626 }
1627 };
1628 class OStoreDirectV : public BinaryOpcode
1629 {
1630 public:
1631 OStoreDirectV(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
1632 std::string toString() const;
1633 Opcode* clone() const
1634 {
1635 return new OStoreDirectV(a->clone(),b->clone());
1636 }
1637 };
1638
1639 class OLoad : public BinaryOpcode
1640 {
1641 public:
1642 117616 OLoad(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
1643 std::string toString() const;
1644 4737 Opcode* clone() const
1645 {
1646
3/6
✓ Branch 0 taken 4737 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 4737 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 4737 times.
✗ Branch 5 not taken.
4737 return new OLoad(a->clone(),b->clone());
1647 }
1648 };
1649 class OStore : public BinaryOpcode
1650 {
1651 public:
1652 14220 OStore(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
1653 std::string toString() const;
1654 1103 Opcode* clone() const
1655 {
1656
3/6
✓ Branch 0 taken 1103 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1103 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1103 times.
✗ Branch 5 not taken.
1103 return new OStore(a->clone(),b->clone());
1657 }
1658 };
1659 class OStoreV : public BinaryOpcode
1660 {
1661 public:
1662 3082 OStoreV(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
1663 std::string toString() const;
1664 240 Opcode* clone() const
1665 {
1666
3/6
✓ Branch 0 taken 240 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 240 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 240 times.
✗ Branch 5 not taken.
240 return new OStoreV(a->clone(),b->clone());
1667 }
1668 };
1669 class OStoreObject : public BinaryOpcode
1670 {
1671 public:
1672 126 OStoreObject(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
1673 std::string toString() const;
1674 62 Opcode* clone() const
1675 {
1676
3/6
✓ Branch 0 taken 62 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 62 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 62 times.
✗ Branch 5 not taken.
62 return new OStoreObject(a->clone(),b->clone());
1677 }
1678 };
1679
1680 class OQuit : public Opcode
1681 {
1682 public:
1683 std::string toString() const;
1684 29 Opcode* clone() const
1685 {
1686
1/2
✓ Branch 0 taken 29 times.
✗ Branch 1 not taken.
29 return new OQuit();
1687 }
1688 };
1689
1690 class OGotoRegister : public UnaryOpcode
1691 {
1692 public:
1693 OGotoRegister(Argument *A) : UnaryOpcode(A) {}
1694 std::string toString() const;
1695 Opcode* clone() const
1696 {
1697 return new OGotoRegister(a->clone());
1698 }
1699 };
1700
1701 class OTraceRegister : public UnaryOpcode
1702 {
1703 public:
1704 118 OTraceRegister(Argument *A) : UnaryOpcode(A) {}
1705 std::string toString() const;
1706 92 Opcode* clone() const
1707 {
1708
2/4
✓ Branch 0 taken 92 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 92 times.
✗ Branch 3 not taken.
92 return new OTraceRegister(a->clone());
1709 }
1710 };
1711 class OTraceImmediate : public UnaryOpcode
1712 {
1713 public:
1714 29 OTraceImmediate(Argument *A) : UnaryOpcode(A) {}
1715 std::string toString() const;
1716 Opcode* clone() const
1717 {
1718 return new OTraceImmediate(a->clone());
1719 }
1720 };
1721
1722 class OTraceLRegister : public UnaryOpcode
1723 {
1724 public:
1725 OTraceLRegister(Argument *A) : UnaryOpcode(A) {}
1726 std::string toString() const;
1727 Opcode* clone() const
1728 {
1729 return new OTraceLRegister(a->clone());
1730 }
1731 };
1732
1733 class OTrace2Register : public UnaryOpcode
1734 {
1735 public:
1736 OTrace2Register(Argument *A) : UnaryOpcode(A) {}
1737 std::string toString() const;
1738 Opcode* clone() const
1739 {
1740 return new OTrace2Register(a->clone());
1741 }
1742 };
1743
1744 class OTrace3 : public Opcode
1745 {
1746 public:
1747 std::string toString() const;
1748 Opcode* clone() const
1749 {
1750 return new OTrace3();
1751 }
1752 };
1753
1754 class OTrace4 : public Opcode
1755 {
1756 public:
1757 std::string toString() const;
1758 Opcode* clone() const
1759 {
1760 return new OTrace4();
1761 }
1762 };
1763
1764 class OTrace5Register : public Opcode
1765 {
1766 public:
1767 std::string toString() const;
1768 Opcode* clone() const
1769 {
1770 return new OTrace5Register();
1771 }
1772 };
1773
1774 class OTrace6Register : public UnaryOpcode
1775 {
1776 public:
1777 OTrace6Register(Argument *A) : UnaryOpcode(A) {}
1778 std::string toString() const;
1779 Opcode* clone() const
1780 {
1781 return new OTrace6Register(a->clone());
1782 }
1783 };
1784
1785 class OPrintfImmediate : public UnaryOpcode
1786 {
1787 public:
1788 OPrintfImmediate(Argument *A) : UnaryOpcode(A) {}
1789 std::string toString() const;
1790 Opcode* clone() const
1791 {
1792 return new OPrintfImmediate(a->clone());
1793 }
1794 };
1795
1796 class OSPrintfImmediate : public UnaryOpcode
1797 {
1798 public:
1799 OSPrintfImmediate(Argument *A) : UnaryOpcode(A) {}
1800 std::string toString() const;
1801 Opcode* clone() const
1802 {
1803 return new OSPrintfImmediate(a->clone());
1804 }
1805 };
1806
1807 class OPrintfVargs : public Opcode
1808 {
1809 public:
1810 std::string toString() const;
1811 Opcode* clone() const
1812 {
1813 return new OPrintfVargs();
1814 }
1815 };
1816
1817 class OSPrintfVargs : public Opcode
1818 {
1819 public:
1820 std::string toString() const;
1821 Opcode* clone() const
1822 {
1823 return new OSPrintfVargs();
1824 }
1825 };
1826
1827 class OBreakpoint : public UnaryOpcode
1828 {
1829 public:
1830 OBreakpoint(Argument *A) : UnaryOpcode(A) {}
1831 std::string toString() const;
1832 Opcode* clone() const
1833 {
1834 return new OBreakpoint(a->clone());
1835 }
1836 };
1837
1838 class OAndImmediate : public BinaryOpcode
1839 {
1840 public:
1841 3540 OAndImmediate(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
1842 std::string toString() const;
1843 125 Opcode* clone() const
1844 {
1845
3/6
✓ Branch 0 taken 125 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 125 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 125 times.
✗ Branch 5 not taken.
125 return new OAndImmediate(a->clone(),b->clone());
1846 }
1847 };
1848
1849 class OAndRegister : public BinaryOpcode
1850 {
1851 public:
1852 481 OAndRegister(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
1853 std::string toString() const;
1854 5 Opcode* clone() const
1855 {
1856
3/6
✓ Branch 0 taken 5 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 5 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 5 times.
✗ Branch 5 not taken.
5 return new OAndRegister(a->clone(),b->clone());
1857 }
1858 };
1859
1860 class OOrImmediate : public BinaryOpcode
1861 {
1862 public:
1863 1327 OOrImmediate(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
1864 std::string toString() const;
1865 20 Opcode* clone() const
1866 {
1867
3/6
✓ Branch 0 taken 20 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 20 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 20 times.
✗ Branch 5 not taken.
20 return new OOrImmediate(a->clone(),b->clone());
1868 }
1869 };
1870
1871 class OOrRegister : public BinaryOpcode
1872 {
1873 public:
1874 201 OOrRegister(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
1875 std::string toString() const;
1876 3 Opcode* clone() const
1877 {
1878
3/6
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 3 times.
✗ Branch 5 not taken.
3 return new OOrRegister(a->clone(),b->clone());
1879 }
1880 };
1881
1882 class OXorImmediate : public BinaryOpcode
1883 {
1884 public:
1885 38 OXorImmediate(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
1886 std::string toString() const;
1887 Opcode* clone() const
1888 {
1889 return new OXorImmediate(a->clone(), b->clone());
1890 }
1891 };
1892
1893 class OXorRegister : public BinaryOpcode
1894 {
1895 public:
1896 36 OXorRegister(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
1897 std::string toString() const;
1898 Opcode* clone() const
1899 {
1900 return new OXorRegister(a->clone(), b->clone());
1901 }
1902 };
1903
1904 class ONot : public UnaryOpcode
1905 {
1906 public:
1907 172 ONot(Argument *A) : UnaryOpcode(A) {}
1908 std::string toString() const;
1909 1 Opcode* clone() const
1910 {
1911
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 return new ONot(a->clone());
1912 }
1913 };
1914
1915 class OLShiftImmediate : public BinaryOpcode
1916 {
1917 public:
1918 354 OLShiftImmediate(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
1919 std::string toString() const;
1920 21 Opcode* clone() const
1921 {
1922
3/6
✓ Branch 0 taken 21 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 21 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 21 times.
✗ Branch 5 not taken.
21 return new OLShiftImmediate(a->clone(), b->clone());
1923 }
1924 };
1925
1926 class OLShiftRegister : public BinaryOpcode
1927 {
1928 public:
1929 104 OLShiftRegister(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
1930 std::string toString() const;
1931 4 Opcode* clone() const
1932 {
1933
3/6
✓ Branch 0 taken 4 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 4 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 4 times.
✗ Branch 5 not taken.
4 return new OLShiftRegister(a->clone(), b->clone());
1934 }
1935 };
1936
1937 class ORShiftImmediate : public BinaryOpcode
1938 {
1939 public:
1940 393 ORShiftImmediate(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
1941 std::string toString() const;
1942 22 Opcode* clone() const
1943 {
1944
3/6
✓ Branch 0 taken 22 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 22 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 22 times.
✗ Branch 5 not taken.
22 return new ORShiftImmediate(a->clone(), b->clone());
1945 }
1946 };
1947
1948 class ORShiftRegister : public BinaryOpcode
1949 {
1950 public:
1951 360 ORShiftRegister(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
1952 std::string toString() const;
1953 Opcode* clone() const
1954 {
1955 return new ORShiftRegister(a->clone(), b->clone());
1956 }
1957 };
1958
1959 class O32BitAndImmediate : public BinaryOpcode
1960 {
1961 public:
1962 O32BitAndImmediate(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
1963 std::string toString() const;
1964 Opcode* clone() const
1965 {
1966 return new O32BitAndImmediate(a->clone(),b->clone());
1967 }
1968 };
1969
1970 class O32BitAndRegister : public BinaryOpcode
1971 {
1972 public:
1973 96 O32BitAndRegister(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
1974 std::string toString() const;
1975 Opcode* clone() const
1976 {
1977 return new O32BitAndRegister(a->clone(),b->clone());
1978 }
1979 };
1980
1981 class O32BitOrImmediate : public BinaryOpcode
1982 {
1983 public:
1984 O32BitOrImmediate(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
1985 std::string toString() const;
1986 Opcode* clone() const
1987 {
1988 return new O32BitOrImmediate(a->clone(),b->clone());
1989 }
1990 };
1991
1992 class O32BitOrRegister : public BinaryOpcode
1993 {
1994 public:
1995 48 O32BitOrRegister(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
1996 std::string toString() const;
1997 Opcode* clone() const
1998 {
1999 return new O32BitOrRegister(a->clone(),b->clone());
2000 }
2001 };
2002
2003 class O32BitXorImmediate : public BinaryOpcode
2004 {
2005 public:
2006 O32BitXorImmediate(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
2007 std::string toString() const;
2008 Opcode* clone() const
2009 {
2010 return new O32BitXorImmediate(a->clone(), b->clone());
2011 }
2012 };
2013
2014 class O32BitXorRegister : public BinaryOpcode
2015 {
2016 public:
2017 O32BitXorRegister(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
2018 std::string toString() const;
2019 Opcode* clone() const
2020 {
2021 return new O32BitXorRegister(a->clone(), b->clone());
2022 }
2023 };
2024
2025 class O32BitNot : public UnaryOpcode
2026 {
2027 public:
2028 48 O32BitNot(Argument *A) : UnaryOpcode(A) {}
2029 std::string toString() const;
2030 Opcode* clone() const
2031 {
2032 return new O32BitNot(a->clone());
2033 }
2034 };
2035
2036 class O32BitLShiftImmediate : public BinaryOpcode
2037 {
2038 public:
2039 O32BitLShiftImmediate(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
2040 std::string toString() const;
2041 Opcode* clone() const
2042 {
2043 return new O32BitLShiftImmediate(a->clone(), b->clone());
2044 }
2045 };
2046
2047 class O32BitLShiftRegister : public BinaryOpcode
2048 {
2049 public:
2050 144 O32BitLShiftRegister(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
2051 std::string toString() const;
2052 Opcode* clone() const
2053 {
2054 return new O32BitLShiftRegister(a->clone(), b->clone());
2055 }
2056 };
2057
2058 class O32BitRShiftImmediate : public BinaryOpcode
2059 {
2060 public:
2061 O32BitRShiftImmediate(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
2062 std::string toString() const;
2063 Opcode* clone() const
2064 {
2065 return new O32BitRShiftImmediate(a->clone(), b->clone());
2066 }
2067 };
2068
2069 class O32BitRShiftRegister : public BinaryOpcode
2070 {
2071 public:
2072 O32BitRShiftRegister(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
2073 std::string toString() const;
2074 Opcode* clone() const
2075 {
2076 return new O32BitRShiftRegister(a->clone(), b->clone());
2077 }
2078 };
2079
2080 class OModuloImmediate : public BinaryOpcode
2081 {
2082 public:
2083 628 OModuloImmediate(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
2084 std::string toString() const;
2085 16 Opcode* clone() const
2086 {
2087
3/6
✓ Branch 0 taken 16 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 16 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 16 times.
✗ Branch 5 not taken.
16 return new OModuloImmediate(a->clone(), b->clone());
2088 }
2089 };
2090
2091 class OModuloImmediate2 : public BinaryOpcode
2092 {
2093 public:
2094 2 OModuloImmediate2(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
2095 std::string toString() const;
2096 1 Opcode* clone() const
2097 {
2098
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 return new OModuloImmediate2(a->clone(), b->clone());
2099 }
2100 };
2101
2102 class OModuloRegister : public BinaryOpcode
2103 {
2104 public:
2105 71 OModuloRegister(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
2106 std::string toString() const;
2107 5 Opcode* clone() const
2108 {
2109
3/6
✓ Branch 0 taken 5 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 5 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 5 times.
✗ Branch 5 not taken.
5 return new OModuloRegister(a->clone(), b->clone());
2110 }
2111 };
2112
2113 class OSinRegister : public BinaryOpcode
2114 {
2115 public:
2116 OSinRegister(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
2117 std::string toString() const;
2118 Opcode* clone() const
2119 {
2120 return new OSinRegister(a->clone(), b->clone());
2121 }
2122 };
2123
2124 class OArcSinRegister : public BinaryOpcode
2125 {
2126 public:
2127 OArcSinRegister(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
2128 std::string toString() const;
2129 Opcode* clone() const
2130 {
2131 return new OArcSinRegister(a->clone(), b->clone());
2132 }
2133 };
2134
2135 class OCosRegister : public BinaryOpcode
2136 {
2137 public:
2138 OCosRegister(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
2139 std::string toString() const;
2140 Opcode* clone() const
2141 {
2142 return new OCosRegister(a->clone(), b->clone());
2143 }
2144 };
2145
2146 class OArcCosRegister : public BinaryOpcode
2147 {
2148 public:
2149 OArcCosRegister(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
2150 std::string toString() const;
2151 Opcode* clone() const
2152 {
2153 return new OArcCosRegister(a->clone(), b->clone());
2154 }
2155 };
2156
2157 class OTanRegister : public BinaryOpcode
2158 {
2159 public:
2160 OTanRegister(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
2161 std::string toString() const;
2162 Opcode* clone() const
2163 {
2164 return new OTanRegister(a->clone(), b->clone());
2165 }
2166 };
2167
2168 class OEngineDegtoRad : public BinaryOpcode
2169 {
2170 public:
2171 OEngineDegtoRad(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
2172 std::string toString() const;
2173 Opcode* clone() const
2174 {
2175 return new OEngineDegtoRad(a->clone(), b->clone());
2176 }
2177 };
2178
2179 class OEngineRadtoDeg : public BinaryOpcode
2180 {
2181 public:
2182 OEngineRadtoDeg(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
2183 std::string toString() const;
2184 Opcode* clone() const
2185 {
2186 return new OEngineRadtoDeg(a->clone(), b->clone());
2187 }
2188 };
2189
2190 class Ostrlen : public BinaryOpcode
2191 {
2192 public:
2193 Ostrlen(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
2194 std::string toString() const;
2195 Opcode* clone() const
2196 {
2197 return new Ostrlen(a->clone(), b->clone());
2198 }
2199 };
2200
2201 class OATanRegister : public UnaryOpcode
2202 {
2203 public:
2204 OATanRegister(Argument *A) : UnaryOpcode(A) {}
2205 std::string toString() const;
2206 Opcode* clone() const
2207 {
2208 return new OATanRegister(a->clone());
2209 }
2210 };
2211
2212 class OMaxRegister : public BinaryOpcode
2213 {
2214 public:
2215 OMaxRegister(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
2216 std::string toString() const;
2217 Opcode* clone() const
2218 {
2219 return new OMaxRegister(a->clone(), b->clone());
2220 }
2221 };
2222
2223 class OMinRegister : public BinaryOpcode
2224 {
2225 public:
2226 OMinRegister(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
2227 std::string toString() const;
2228 Opcode* clone() const
2229 {
2230 return new OMinRegister(a->clone(), b->clone());
2231 }
2232 };
2233
2234 class OMaxNew: public Opcode
2235 {
2236 public:
2237 std::string toString() const;
2238 Opcode* clone() const
2239 {
2240 return new OMaxNew();
2241 }
2242 };
2243
2244 class OMinNew: public Opcode
2245 {
2246 public:
2247 std::string toString() const;
2248 Opcode* clone() const
2249 {
2250 return new OMinNew();
2251 }
2252 };
2253
2254 class OChoose: public Opcode
2255 {
2256 public:
2257 std::string toString() const;
2258 Opcode* clone() const
2259 {
2260 return new OChoose();
2261 }
2262 };
2263
2264 class OPowRegister : public BinaryOpcode
2265 {
2266 public:
2267 OPowRegister(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
2268 std::string toString() const;
2269 Opcode* clone() const
2270 {
2271 return new OPowRegister(a->clone(), b->clone());
2272 }
2273 };
2274 class OPowImmediate : public BinaryOpcode
2275 {
2276 public:
2277 OPowImmediate(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
2278 std::string toString() const;
2279 Opcode* clone() const
2280 {
2281 return new OPowImmediate(a->clone(), b->clone());
2282 }
2283 };
2284 class OPowImmediate2 : public BinaryOpcode
2285 {
2286 public:
2287 OPowImmediate2(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
2288 std::string toString() const;
2289 Opcode* clone() const
2290 {
2291 return new OPowImmediate2(a->clone(), b->clone());
2292 }
2293 };
2294
2295 class OLPowRegister : public BinaryOpcode
2296 {
2297 public:
2298 OLPowRegister(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
2299 std::string toString() const;
2300 Opcode* clone() const
2301 {
2302 return new OLPowRegister(a->clone(), b->clone());
2303 }
2304 };
2305 class OLPowImmediate : public BinaryOpcode
2306 {
2307 public:
2308 OLPowImmediate(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
2309 std::string toString() const;
2310 Opcode* clone() const
2311 {
2312 return new OLPowImmediate(a->clone(), b->clone());
2313 }
2314 };
2315 class OLPowImmediate2 : public BinaryOpcode
2316 {
2317 public:
2318 OLPowImmediate2(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
2319 std::string toString() const;
2320 Opcode* clone() const
2321 {
2322 return new OLPowImmediate2(a->clone(), b->clone());
2323 }
2324 };
2325
2326 class OInvPowRegister : public BinaryOpcode
2327 {
2328 public:
2329 OInvPowRegister(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
2330 std::string toString() const;
2331 Opcode* clone() const
2332 {
2333 return new OInvPowRegister(a->clone(), b->clone());
2334 }
2335 };
2336
2337 class OFactorial : public UnaryOpcode
2338 {
2339 public:
2340 OFactorial(Argument *A) : UnaryOpcode(A) {}
2341 std::string toString() const;
2342 Opcode* clone() const
2343 {
2344 return new OFactorial(a->clone());
2345 }
2346 };
2347
2348 class OAbsRegister : public UnaryOpcode
2349 {
2350 public:
2351 OAbsRegister(Argument *A) : UnaryOpcode(A) {}
2352 std::string toString() const;
2353 Opcode* clone() const
2354 {
2355 return new OAbsRegister(a->clone());
2356 }
2357 };
2358
2359 class OLog10Register : public UnaryOpcode
2360 {
2361 public:
2362 OLog10Register(Argument *A) : UnaryOpcode(A) {}
2363 std::string toString() const;
2364 Opcode* clone() const
2365 {
2366 return new OLog10Register(a->clone());
2367 }
2368 };
2369
2370 class OLogERegister : public UnaryOpcode
2371 {
2372 public:
2373 OLogERegister(Argument *A) : UnaryOpcode(A) {}
2374 std::string toString() const;
2375 Opcode* clone() const
2376 {
2377 return new OLogERegister(a->clone());
2378 }
2379 };
2380
2381 class OArraySize : public UnaryOpcode
2382 {
2383 public:
2384 2 OArraySize(Argument *A) : UnaryOpcode(A) {}
2385 std::string toString() const;
2386 1 Opcode* clone() const
2387 {
2388
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 return new OArraySize(a->clone());
2389 }
2390 };
2391
2392
2393 class OArraySizeF : public UnaryOpcode
2394 {
2395 public:
2396 OArraySizeF(Argument *A) : UnaryOpcode(A) {}
2397 std::string toString() const;
2398 Opcode* clone() const
2399 {
2400 return new OArraySizeF(a->clone());
2401 }
2402 };
2403 class OArraySizeN : public UnaryOpcode
2404 {
2405 public:
2406 OArraySizeN(Argument *A) : UnaryOpcode(A) {}
2407 std::string toString() const;
2408 Opcode* clone() const
2409 {
2410 return new OArraySizeN(a->clone());
2411 }
2412 };
2413 class OArraySizeE : public UnaryOpcode
2414 {
2415 public:
2416 OArraySizeE(Argument *A) : UnaryOpcode(A) {}
2417 std::string toString() const;
2418 Opcode* clone() const
2419 {
2420 return new OArraySizeE(a->clone());
2421 }
2422 };
2423 class OArraySizeL : public UnaryOpcode
2424 {
2425 public:
2426 OArraySizeL(Argument *A) : UnaryOpcode(A) {}
2427 std::string toString() const;
2428 Opcode* clone() const
2429 {
2430 return new OArraySizeL(a->clone());
2431 }
2432 };
2433 class OArraySizeB : public UnaryOpcode
2434 {
2435 public:
2436 OArraySizeB(Argument *A) : UnaryOpcode(A) {}
2437 std::string toString() const;
2438 Opcode* clone() const
2439 {
2440 return new OArraySizeB(a->clone());
2441 }
2442 };
2443 class OArraySizeI : public UnaryOpcode
2444 {
2445 public:
2446 OArraySizeI(Argument *A) : UnaryOpcode(A) {}
2447 std::string toString() const;
2448 Opcode* clone() const
2449 {
2450 return new OArraySizeI(a->clone());
2451 }
2452 };
2453 class OArraySizeID : public UnaryOpcode
2454 {
2455 public:
2456 OArraySizeID(Argument *A) : UnaryOpcode(A) {}
2457 std::string toString() const;
2458 Opcode* clone() const
2459 {
2460 return new OArraySizeID(a->clone());
2461 }
2462 };
2463
2464 class OCheckTrig : public Opcode
2465 {
2466 public:
2467 std::string toString() const;
2468 Opcode* clone() const
2469 {
2470 return new OCheckTrig();
2471 }
2472 };
2473
2474 class ORandRegister : public BinaryOpcode
2475 {
2476 public:
2477 ORandRegister(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
2478 std::string toString() const;
2479 Opcode* clone() const
2480 {
2481 return new ORandRegister(a->clone(), b->clone());
2482 }
2483 };
2484
2485 class OSRandRegister : public UnaryOpcode
2486 {
2487 public:
2488 OSRandRegister(Argument *A) : UnaryOpcode(A) {}
2489 std::string toString() const;
2490 Opcode* clone() const
2491 {
2492 return new OSRandRegister(a->clone());
2493 }
2494 };
2495
2496 class OSRandImmediate : public UnaryOpcode
2497 {
2498 public:
2499 OSRandImmediate(Argument *A) : UnaryOpcode(A) {}
2500 std::string toString() const;
2501 Opcode* clone() const
2502 {
2503 return new OSRandImmediate(a->clone());
2504 }
2505 };
2506
2507 class OSRandRand : public UnaryOpcode
2508 {
2509 public:
2510 OSRandRand(Argument *A) : UnaryOpcode(A) {}
2511 std::string toString() const;
2512 Opcode* clone() const
2513 {
2514 return new OSRandRand(a->clone());
2515 }
2516 };
2517
2518 class ORNGRand1 : public Opcode
2519 {
2520 public:
2521 ORNGRand1() : Opcode() {}
2522 std::string toString() const;
2523 Opcode* clone() const
2524 {
2525 return new ORNGRand1();
2526 }
2527 };
2528
2529 class ORNGRand2 : public UnaryOpcode
2530 {
2531 public:
2532 ORNGRand2(Argument *A) : UnaryOpcode(A) {}
2533 std::string toString() const;
2534 Opcode* clone() const
2535 {
2536 return new ORNGRand2(a->clone());
2537 }
2538 };
2539
2540 class ORNGRand3 : public BinaryOpcode
2541 {
2542 public:
2543 ORNGRand3(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
2544 std::string toString() const;
2545 Opcode* clone() const
2546 {
2547 return new ORNGRand3(a->clone(), b->clone());
2548 }
2549 };
2550
2551 class ORNGLRand1 : public Opcode
2552 {
2553 public:
2554 ORNGLRand1() : Opcode() {}
2555 std::string toString() const;
2556 Opcode* clone() const
2557 {
2558 return new ORNGLRand1();
2559 }
2560 };
2561
2562 class ORNGLRand2 : public UnaryOpcode
2563 {
2564 public:
2565 ORNGLRand2(Argument *A) : UnaryOpcode(A) {}
2566 std::string toString() const;
2567 Opcode* clone() const
2568 {
2569 return new ORNGLRand2(a->clone());
2570 }
2571 };
2572
2573 class ORNGLRand3 : public BinaryOpcode
2574 {
2575 public:
2576 ORNGLRand3(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
2577 std::string toString() const;
2578 Opcode* clone() const
2579 {
2580 return new ORNGLRand3(a->clone(), b->clone());
2581 }
2582 };
2583
2584 class ORNGSeed : public UnaryOpcode
2585 {
2586 public:
2587 ORNGSeed(Argument *A) : UnaryOpcode(A) {}
2588 std::string toString() const;
2589 Opcode* clone() const
2590 {
2591 return new ORNGSeed(a->clone());
2592 }
2593 };
2594
2595 class ORNGRSeed : public Opcode
2596 {
2597 public:
2598 ORNGRSeed() : Opcode() {}
2599 std::string toString() const;
2600 Opcode* clone() const
2601 {
2602 return new ORNGRSeed();
2603 }
2604 };
2605
2606 class ORNGFree : public Opcode
2607 {
2608 public:
2609 ORNGFree() : Opcode() {}
2610 std::string toString() const;
2611 Opcode* clone() const
2612 {
2613 return new ORNGFree();
2614 }
2615 };
2616
2617 class OSqrtRegister : public BinaryOpcode
2618 {
2619 public:
2620 OSqrtRegister(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
2621 std::string toString() const;
2622 Opcode* clone() const
2623 {
2624 return new OSqrtRegister(a->clone(),b->clone());
2625 }
2626 };
2627
2628 class OWarp : public BinaryOpcode
2629 {
2630 public:
2631 OWarp(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
2632 std::string toString() const;
2633 Opcode* clone() const
2634 {
2635 return new OWarp(a->clone(), b->clone());
2636 }
2637 };
2638
2639 class OPitWarp : public BinaryOpcode
2640 {
2641 public:
2642 OPitWarp(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
2643 std::string toString() const;
2644 Opcode* clone() const
2645 {
2646 return new OPitWarp(a->clone(), b->clone());
2647 }
2648 };
2649
2650 class OCreateItemRegister : public UnaryOpcode
2651 {
2652 public:
2653 OCreateItemRegister(Argument *A) : UnaryOpcode(A) {}
2654 std::string toString() const;
2655 Opcode* clone() const
2656 {
2657 return new OCreateItemRegister(a->clone());
2658 }
2659 };
2660
2661 class OCreateNPCRegister : public UnaryOpcode
2662 {
2663 public:
2664 OCreateNPCRegister(Argument *A) : UnaryOpcode(A) {}
2665 std::string toString() const;
2666 Opcode* clone() const
2667 {
2668 return new OCreateNPCRegister(a->clone());
2669 }
2670 };
2671
2672 class OCreateLWpnRegister : public UnaryOpcode
2673 {
2674 public:
2675 OCreateLWpnRegister(Argument *A) : UnaryOpcode(A) {}
2676 std::string toString() const;
2677 Opcode* clone() const
2678 {
2679 return new OCreateLWpnRegister(a->clone());
2680 }
2681 };
2682
2683 class OCreateEWpnRegister : public UnaryOpcode
2684 {
2685 public:
2686 OCreateEWpnRegister(Argument *A) : UnaryOpcode(A) {}
2687 std::string toString() const;
2688 Opcode* clone() const
2689 {
2690 return new OCreateEWpnRegister(a->clone());
2691 }
2692 };
2693
2694 class OLoadItemRegister : public UnaryOpcode
2695 {
2696 public:
2697 OLoadItemRegister(Argument *A) : UnaryOpcode(A) {}
2698 std::string toString() const;
2699 Opcode* clone() const
2700 {
2701 return new OLoadItemRegister(a->clone());
2702 }
2703 };
2704
2705 class OLoadItemDataRegister : public UnaryOpcode
2706 {
2707 public:
2708 OLoadItemDataRegister(Argument *A) : UnaryOpcode(A) {}
2709 std::string toString() const;
2710 Opcode* clone() const
2711 {
2712 return new OLoadItemDataRegister(a->clone());
2713 }
2714 };
2715
2716 class OLoadShopDataRegister : public UnaryOpcode
2717 {
2718 public:
2719 OLoadShopDataRegister(Argument *A) : UnaryOpcode(A) {}
2720 std::string toString() const;
2721 Opcode* clone() const
2722 {
2723 return new OLoadShopDataRegister(a->clone());
2724 }
2725 };
2726
2727
2728 class OLoadInfoShopDataRegister : public UnaryOpcode
2729 {
2730 public:
2731 OLoadInfoShopDataRegister(Argument *A) : UnaryOpcode(A) {}
2732 std::string toString() const;
2733 Opcode* clone() const
2734 {
2735 return new OLoadInfoShopDataRegister(a->clone());
2736 }
2737 };
2738
2739 class OLoadNPCDataRegister : public UnaryOpcode
2740 {
2741 public:
2742 OLoadNPCDataRegister(Argument *A) : UnaryOpcode(A) {}
2743 std::string toString() const;
2744 Opcode* clone() const
2745 {
2746 return new OLoadNPCDataRegister(a->clone());
2747 }
2748 };
2749
2750
2751 class OLoadMessageDataRegister : public UnaryOpcode
2752 {
2753 public:
2754 OLoadMessageDataRegister(Argument *A) : UnaryOpcode(A) {}
2755 std::string toString() const;
2756 Opcode* clone() const
2757 {
2758 return new OLoadMessageDataRegister(a->clone());
2759 }
2760 };
2761
2762
2763 class OLoadDMapDataRegister : public UnaryOpcode
2764 {
2765 public:
2766 OLoadDMapDataRegister(Argument *A) : UnaryOpcode(A) {}
2767 std::string toString() const;
2768 Opcode* clone() const
2769 {
2770 return new OLoadDMapDataRegister(a->clone());
2771 }
2772 };
2773
2774 class OLoadStack : public Opcode
2775 {
2776 public:
2777 OLoadStack() : Opcode() {}
2778 std::string toString() const;
2779 Opcode* clone() const
2780 {
2781 return new OLoadStack();
2782 }
2783 };
2784
2785 class OLoadDirectoryRegister : public UnaryOpcode
2786 {
2787 public:
2788 OLoadDirectoryRegister(Argument *A) : UnaryOpcode(A) {}
2789 std::string toString() const;
2790 Opcode* clone() const
2791 {
2792 return new OLoadDirectoryRegister(a->clone());
2793 }
2794 };
2795
2796 class OLoadRNG : public Opcode
2797 {
2798 public:
2799 OLoadRNG() : Opcode() {}
2800 std::string toString() const;
2801 Opcode* clone() const
2802 {
2803 return new OLoadRNG();
2804 }
2805 };
2806
2807 class OCreatePalData : public Opcode
2808 {
2809 public:
2810 OCreatePalData() : Opcode() {}
2811 std::string toString() const;
2812 Opcode* clone() const
2813 {
2814 return new OCreatePalData();
2815 }
2816 };
2817
2818 class OCreatePalDataClr : public UnaryOpcode
2819 {
2820 public:
2821 OCreatePalDataClr(Argument *A) : UnaryOpcode(A) {}
2822 std::string toString() const;
2823 Opcode* clone() const
2824 {
2825 return new OCreatePalDataClr(a->clone());
2826 }
2827 };
2828
2829 class OCreateRGBHex : public UnaryOpcode
2830 {
2831 public:
2832 OCreateRGBHex(Argument* A) : UnaryOpcode(A) {}
2833 std::string toString() const;
2834 Opcode* clone() const
2835 {
2836 return new OCreateRGBHex(a->clone());
2837 }
2838 };
2839
2840 class OCreateRGB : public Opcode
2841 {
2842 public:
2843 OCreateRGB() : Opcode() {}
2844 std::string toString() const;
2845 Opcode* clone() const
2846 {
2847 return new OCreateRGB();
2848 }
2849 };
2850
2851 class OConvertFromRGB : public Opcode
2852 {
2853 public:
2854 OConvertFromRGB() : Opcode() {}
2855 std::string toString() const;
2856 Opcode* clone() const
2857 {
2858 return new OConvertFromRGB();
2859 }
2860 };
2861
2862 class OConvertToRGB : public Opcode
2863 {
2864 public:
2865 OConvertToRGB() : Opcode() {}
2866 std::string toString() const;
2867 Opcode* clone() const
2868 {
2869 return new OConvertToRGB();
2870 }
2871 };
2872
2873 class OGetTilePixel : public Opcode
2874 {
2875 public:
2876 OGetTilePixel() : Opcode() {}
2877 std::string toString() const;
2878 Opcode* clone() const
2879 {
2880 return new OGetTilePixel();
2881 }
2882 };
2883
2884 class OSetTilePixel : public Opcode
2885 {
2886 public:
2887 OSetTilePixel() : Opcode() {}
2888 std::string toString() const;
2889 Opcode* clone() const
2890 {
2891 return new OSetTilePixel();
2892 }
2893 };
2894
2895 class OMixColorArray : public Opcode
2896 {
2897 public:
2898 OMixColorArray() : Opcode() {}
2899 std::string toString() const;
2900 Opcode* clone() const
2901 {
2902 return new OMixColorArray();
2903 }
2904 };
2905
2906 class OLoadLevelPalette : public UnaryOpcode
2907 {
2908 public:
2909 OLoadLevelPalette(Argument *A) : UnaryOpcode(A) {}
2910 std::string toString() const;
2911 Opcode* clone() const
2912 {
2913 return new OLoadLevelPalette(a->clone());
2914 }
2915 };
2916
2917 class OLoadSpritePalette : public UnaryOpcode
2918 {
2919 public:
2920 OLoadSpritePalette(Argument *A) : UnaryOpcode(A) {}
2921 std::string toString() const;
2922 Opcode* clone() const
2923 {
2924 return new OLoadSpritePalette(a->clone());
2925 }
2926 };
2927
2928 class OLoadMainPalette : public Opcode
2929 {
2930 public:
2931 OLoadMainPalette() : Opcode() {}
2932 std::string toString() const;
2933 Opcode* clone() const
2934 {
2935 return new OLoadMainPalette();
2936 }
2937 };
2938
2939 class OLoadCyclePalette : public UnaryOpcode
2940 {
2941 public:
2942 OLoadCyclePalette(Argument* A) : UnaryOpcode(A) {}
2943 std::string toString() const;
2944 Opcode* clone() const
2945 {
2946 return new OLoadCyclePalette(a->clone());
2947 }
2948 };
2949
2950 class OLoadBitmapPalette : public UnaryOpcode
2951 {
2952 public:
2953 OLoadBitmapPalette(Argument* A) : UnaryOpcode(A) {}
2954 std::string toString() const;
2955 Opcode* clone() const
2956 {
2957 return new OLoadBitmapPalette(a->clone());
2958 }
2959 };
2960
2961 class OWriteLevelPalette : public UnaryOpcode
2962 {
2963 public:
2964 OWriteLevelPalette(Argument *A) : UnaryOpcode(A) {}
2965 std::string toString() const;
2966 Opcode* clone() const
2967 {
2968 return new OWriteLevelPalette(a->clone());
2969 }
2970 };
2971
2972 class OWriteLevelCSet : public BinaryOpcode
2973 {
2974 public:
2975 OWriteLevelCSet(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
2976 std::string toString() const;
2977 Opcode* clone() const
2978 {
2979 return new OWriteLevelCSet(a->clone(), b->clone());
2980 }
2981 };
2982
2983 class OWriteSpritePalette : public UnaryOpcode
2984 {
2985 public:
2986 OWriteSpritePalette(Argument *A) : UnaryOpcode(A) {}
2987 std::string toString() const;
2988 Opcode* clone() const
2989 {
2990 return new OWriteSpritePalette(a->clone());
2991 }
2992 };
2993
2994 class OWriteSpriteCSet : public BinaryOpcode
2995 {
2996 public:
2997 OWriteSpriteCSet(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
2998 std::string toString() const;
2999 Opcode* clone() const
3000 {
3001 return new OWriteSpriteCSet(a->clone(), b->clone());
3002 }
3003 };
3004
3005 class OWriteMainPalette : public Opcode
3006 {
3007 public:
3008 OWriteMainPalette() : Opcode() {}
3009 std::string toString() const;
3010 Opcode* clone() const
3011 {
3012 return new OWriteMainPalette();
3013 }
3014 };
3015
3016 class OWriteMainCSet : public UnaryOpcode
3017 {
3018 public:
3019 OWriteMainCSet(Argument *A) : UnaryOpcode(A) {}
3020 std::string toString() const;
3021 Opcode* clone() const
3022 {
3023 return new OWriteMainCSet(a->clone());
3024 }
3025 };
3026
3027 class OWriteCyclePalette : public UnaryOpcode
3028 {
3029 public:
3030 OWriteCyclePalette(Argument *A) : UnaryOpcode(A) {}
3031 std::string toString() const;
3032 Opcode* clone() const
3033 {
3034 return new OWriteCyclePalette(a->clone());
3035 }
3036 };
3037
3038 class OWriteCycleCSet : public BinaryOpcode
3039 {
3040 public:
3041 OWriteCycleCSet(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
3042 std::string toString() const;
3043 Opcode* clone() const
3044 {
3045 return new OWriteCycleCSet(a->clone(), b->clone());
3046 }
3047 };
3048
3049 class OPalDataColorValid : public UnaryOpcode
3050 {
3051 public:
3052 OPalDataColorValid(Argument* A) : UnaryOpcode(A) {}
3053 std::string toString() const;
3054 Opcode* clone() const
3055 {
3056 return new OPalDataColorValid(a->clone());
3057 }
3058 };
3059
3060 class OPalDataClearColor : public UnaryOpcode
3061 {
3062 public:
3063 OPalDataClearColor(Argument *A) : UnaryOpcode(A) {}
3064 std::string toString() const;
3065 Opcode* clone() const
3066 {
3067 return new OPalDataClearColor(a->clone());
3068 }
3069 };
3070
3071 class OPalDataClearCSet : public UnaryOpcode
3072 {
3073 public:
3074 OPalDataClearCSet(Argument* A) : UnaryOpcode(A) {}
3075 std::string toString() const;
3076 Opcode* clone() const
3077 {
3078 return new OPalDataClearCSet(a->clone());
3079 }
3080 };
3081
3082 class OPalDataMix : public Opcode
3083 {
3084 public:
3085 OPalDataMix() : Opcode() {}
3086 std::string toString() const;
3087 Opcode* clone() const
3088 {
3089 return new OPalDataMix();
3090 }
3091 };
3092
3093 class OPalDataMixCSet : public Opcode
3094 {
3095 public:
3096 OPalDataMixCSet() : Opcode() {}
3097 std::string toString() const;
3098 Opcode* clone() const
3099 {
3100 return new OPalDataMixCSet();
3101 }
3102 };
3103
3104 class OPalDataCopy : public UnaryOpcode
3105 {
3106 public:
3107 OPalDataCopy(Argument *A) : UnaryOpcode(A) {}
3108 std::string toString() const;
3109 Opcode* clone() const
3110 {
3111 return new OPalDataCopy(a->clone());
3112 }
3113 };
3114
3115 class OPalDataCopyCSet : public Opcode
3116 {
3117 public:
3118 OPalDataCopyCSet() : Opcode() {}
3119 std::string toString() const;
3120 Opcode* clone() const
3121 {
3122 return new OPalDataCopyCSet();
3123 }
3124 };
3125
3126 class OLoadDropsetRegister : public UnaryOpcode
3127 {
3128 public:
3129 OLoadDropsetRegister(Argument *A) : UnaryOpcode(A) {}
3130 std::string toString() const;
3131 Opcode* clone() const
3132 {
3133 return new OLoadDropsetRegister(a->clone());
3134 }
3135 };
3136
3137 class OGetBottleShopName : public UnaryOpcode
3138 {
3139 public:
3140 OGetBottleShopName(Argument *A) : UnaryOpcode(A) {}
3141 std::string toString() const;
3142 Opcode* clone() const
3143 {
3144 return new OGetBottleShopName(a->clone());
3145 }
3146 };
3147
3148 class OSetBottleShopName : public UnaryOpcode
3149 {
3150 public:
3151 OSetBottleShopName(Argument *A) : UnaryOpcode(A) {}
3152 std::string toString() const;
3153 Opcode* clone() const
3154 {
3155 return new OSetBottleShopName(a->clone());
3156 }
3157 };
3158
3159 class OGetBottleName : public UnaryOpcode
3160 {
3161 public:
3162 OGetBottleName(Argument *A) : UnaryOpcode(A) {}
3163 std::string toString() const;
3164 Opcode* clone() const
3165 {
3166 return new OGetBottleName(a->clone());
3167 }
3168 };
3169
3170 class OSetBottleName : public UnaryOpcode
3171 {
3172 public:
3173 OSetBottleName(Argument *A) : UnaryOpcode(A) {}
3174 std::string toString() const;
3175 Opcode* clone() const
3176 {
3177 return new OSetBottleName(a->clone());
3178 }
3179 };
3180
3181 class OLoadBottleTypeRegister : public UnaryOpcode
3182 {
3183 public:
3184 OLoadBottleTypeRegister(Argument *A) : UnaryOpcode(A) {}
3185 std::string toString() const;
3186 Opcode* clone() const
3187 {
3188 return new OLoadBottleTypeRegister(a->clone());
3189 }
3190 };
3191
3192 class OLoadBShopRegister : public UnaryOpcode
3193 {
3194 public:
3195 OLoadBShopRegister(Argument *A) : UnaryOpcode(A) {}
3196 std::string toString() const;
3197 Opcode* clone() const
3198 {
3199 return new OLoadBShopRegister(a->clone());
3200 }
3201 };
3202
3203 class OLoadGenericDataR : public UnaryOpcode
3204 {
3205 public:
3206 OLoadGenericDataR(Argument *A) : UnaryOpcode(A) {}
3207 std::string toString() const;
3208 Opcode* clone() const
3209 {
3210 return new OLoadGenericDataR(a->clone());
3211 }
3212 };
3213
3214 class ODMapDataGetNameRegister : public UnaryOpcode
3215 {
3216 public:
3217 ODMapDataGetNameRegister(Argument *A) : UnaryOpcode(A) {}
3218 std::string toString() const;
3219 Opcode* clone() const
3220 {
3221 return new ODMapDataGetNameRegister(a->clone());
3222 }
3223 };
3224
3225 class ODMapDataSetNameRegister : public UnaryOpcode
3226 {
3227 public:
3228 ODMapDataSetNameRegister(Argument *A) : UnaryOpcode(A) {}
3229 std::string toString() const;
3230 Opcode* clone() const
3231 {
3232 return new ODMapDataSetNameRegister(a->clone());
3233 }
3234 };
3235
3236 class ODMapDataGetTitleRegister : public UnaryOpcode
3237 {
3238 public:
3239 ODMapDataGetTitleRegister(Argument *A) : UnaryOpcode(A) {}
3240 std::string toString() const;
3241 Opcode* clone() const
3242 {
3243 return new ODMapDataGetTitleRegister(a->clone());
3244 }
3245 };
3246
3247 class ODMapDataSetTitleRegister : public UnaryOpcode
3248 {
3249 public:
3250 ODMapDataSetTitleRegister(Argument *A) : UnaryOpcode(A) {}
3251 std::string toString() const;
3252 Opcode* clone() const
3253 {
3254 return new ODMapDataSetTitleRegister(a->clone());
3255 }
3256 };
3257
3258 class ODMapDataGetIntroRegister : public UnaryOpcode
3259 {
3260 public:
3261 ODMapDataGetIntroRegister(Argument *A) : UnaryOpcode(A) {}
3262 std::string toString() const;
3263 Opcode* clone() const
3264 {
3265 return new ODMapDataGetIntroRegister(a->clone());
3266 }
3267 };
3268
3269 class ODMapDataSetIntroRegister : public UnaryOpcode
3270 {
3271 public:
3272 ODMapDataSetIntroRegister(Argument *A) : UnaryOpcode(A) {}
3273 std::string toString() const;
3274 Opcode* clone() const
3275 {
3276 return new ODMapDataSetIntroRegister(a->clone());
3277 }
3278 };
3279
3280 class ODMapDataGetMusicRegister : public UnaryOpcode
3281 {
3282 public:
3283 ODMapDataGetMusicRegister(Argument *A) : UnaryOpcode(A) {}
3284 std::string toString() const;
3285 Opcode* clone() const
3286 {
3287 return new ODMapDataGetMusicRegister(a->clone());
3288 }
3289 };
3290
3291 class ODMapDataSetMusicRegister : public UnaryOpcode
3292 {
3293 public:
3294 ODMapDataSetMusicRegister(Argument *A) : UnaryOpcode(A) {}
3295 std::string toString() const;
3296 Opcode* clone() const
3297 {
3298 return new ODMapDataSetMusicRegister(a->clone());
3299 }
3300 };
3301
3302
3303 class OMessageDataSetStringRegister : public UnaryOpcode
3304 {
3305 public:
3306 OMessageDataSetStringRegister(Argument *A) : UnaryOpcode(A) {}
3307 std::string toString() const;
3308 Opcode* clone() const
3309 {
3310 return new OMessageDataSetStringRegister(a->clone());
3311 }
3312 };
3313
3314
3315 class OMessageDataGetStringRegister : public UnaryOpcode
3316 {
3317 public:
3318 OMessageDataGetStringRegister(Argument *A) : UnaryOpcode(A) {}
3319 std::string toString() const;
3320 Opcode* clone() const
3321 {
3322 return new OMessageDataGetStringRegister(a->clone());
3323 }
3324 };
3325
3326 class OLoadComboDataRegister : public UnaryOpcode
3327 {
3328 public:
3329 OLoadComboDataRegister(Argument *A) : UnaryOpcode(A) {}
3330 std::string toString() const;
3331 Opcode* clone() const
3332 {
3333 return new OLoadComboDataRegister(a->clone());
3334 }
3335 };
3336
3337 class OLoadMapDataRegister : public BinaryOpcode
3338 {
3339 public:
3340 OLoadMapDataRegister(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
3341 std::string toString() const;
3342 Opcode* clone() const
3343 {
3344 return new OLoadMapDataRegister(a->clone(), b->clone());
3345 }
3346 };
3347
3348
3349 class OLoadSpriteDataRegister : public UnaryOpcode
3350 {
3351 public:
3352 OLoadSpriteDataRegister(Argument *A) : UnaryOpcode(A) {}
3353 std::string toString() const;
3354 Opcode* clone() const
3355 {
3356 return new OLoadSpriteDataRegister(a->clone());
3357 }
3358 };
3359
3360
3361 class OLoadScreenDataRegister : public UnaryOpcode
3362 {
3363 public:
3364 OLoadScreenDataRegister(Argument *A) : UnaryOpcode(A) {}
3365 std::string toString() const;
3366 Opcode* clone() const
3367 {
3368 return new OLoadScreenDataRegister(a->clone());
3369 }
3370 };
3371
3372
3373 class OLoadBitmapDataRegister : public UnaryOpcode
3374 {
3375 public:
3376 OLoadBitmapDataRegister(Argument *A) : UnaryOpcode(A) {}
3377 std::string toString() const;
3378 Opcode* clone() const
3379 {
3380 return new OLoadBitmapDataRegister(a->clone());
3381 }
3382 };
3383
3384 class OLoadNPCRegister : public UnaryOpcode
3385 {
3386 public:
3387 OLoadNPCRegister(Argument *A) : UnaryOpcode(A) {}
3388 std::string toString() const;
3389 Opcode* clone() const
3390 {
3391 return new OLoadNPCRegister(a->clone());
3392 }
3393 };
3394
3395 class OLoadLWpnRegister : public UnaryOpcode
3396 {
3397 public:
3398 OLoadLWpnRegister(Argument *A) : UnaryOpcode(A) {}
3399 std::string toString() const;
3400 Opcode* clone() const
3401 {
3402 return new OLoadLWpnRegister(a->clone());
3403 }
3404 };
3405
3406 class OLoadEWpnRegister : public UnaryOpcode
3407 {
3408 public:
3409 OLoadEWpnRegister(Argument *A) : UnaryOpcode(A) {}
3410 std::string toString() const;
3411 Opcode* clone() const
3412 {
3413 return new OLoadEWpnRegister(a->clone());
3414 }
3415 };
3416
3417 class OPlaySoundRegister : public UnaryOpcode
3418 {
3419 public:
3420 OPlaySoundRegister(Argument *A) : UnaryOpcode(A) {}
3421 std::string toString() const;
3422 Opcode* clone() const
3423 {
3424 return new OPlaySoundRegister(a->clone());
3425 }
3426 };
3427
3428 // Audio->
3429
3430
3431 class OAdjustVolumeRegister : public UnaryOpcode
3432 {
3433 public:
3434 OAdjustVolumeRegister(Argument *A) : UnaryOpcode(A) {}
3435 std::string toString() const;
3436 Opcode* clone() const
3437 {
3438 return new OAdjustVolumeRegister(a->clone());
3439 }
3440 };
3441
3442
3443 class OAdjustSFXVolumeRegister : public UnaryOpcode
3444 {
3445 public:
3446 OAdjustSFXVolumeRegister(Argument *A) : UnaryOpcode(A) {}
3447 std::string toString() const;
3448 Opcode* clone() const
3449 {
3450 return new OAdjustSFXVolumeRegister(a->clone());
3451 }
3452 };
3453
3454 class OAdjustSound : public Opcode
3455 {
3456 public:
3457 OAdjustSound() : Opcode() {}
3458 std::string toString() const;
3459 Opcode* clone() const
3460 {
3461 return new OAdjustSound();
3462 }
3463 };
3464
3465 class OPlaySoundEX : public Opcode
3466 {
3467 public:
3468 OPlaySoundEX() : Opcode() {}
3469 std::string toString() const;
3470 Opcode* clone() const
3471 {
3472 return new OPlaySoundEX();
3473 }
3474 };
3475
3476 class OGetSoundCompletion : public UnaryOpcode
3477 {
3478 public:
3479 OGetSoundCompletion(Argument *A) : UnaryOpcode(A) {}
3480 std::string toString() const;
3481 Opcode* clone() const
3482 {
3483 return new OGetSoundCompletion(a->clone());
3484 }
3485 };
3486
3487 class OEndSoundRegister : public UnaryOpcode
3488 {
3489 public:
3490 OEndSoundRegister(Argument *A) : UnaryOpcode(A) {}
3491 std::string toString() const;
3492 Opcode* clone() const
3493 {
3494 return new OEndSoundRegister(a->clone());
3495 }
3496 };
3497
3498
3499 class OPauseSoundRegister : public UnaryOpcode
3500 {
3501 public:
3502 OPauseSoundRegister(Argument *A) : UnaryOpcode(A) {}
3503 std::string toString() const;
3504 Opcode* clone() const
3505 {
3506 return new OPauseSoundRegister(a->clone());
3507 }
3508 };
3509
3510
3511 class OResumeSoundRegister : public UnaryOpcode
3512 {
3513 public:
3514 OResumeSoundRegister(Argument *A) : UnaryOpcode(A) {}
3515 std::string toString() const;
3516 Opcode* clone() const
3517 {
3518 return new OResumeSoundRegister(a->clone());
3519 }
3520 };
3521
3522
3523 class OPauseSFX : public UnaryOpcode
3524 {
3525 public:
3526 OPauseSFX(Argument *A) : UnaryOpcode(A) {}
3527 std::string toString() const;
3528 Opcode* clone() const
3529 {
3530 return new OPauseSFX(a->clone());
3531 }
3532 };
3533
3534 class OResumeSFX : public UnaryOpcode
3535 {
3536 public:
3537 OResumeSFX(Argument *A) : UnaryOpcode(A) {}
3538 std::string toString() const;
3539 Opcode* clone() const
3540 {
3541 return new OResumeSFX(a->clone());
3542 }
3543 };
3544
3545 class OContinueSFX : public UnaryOpcode
3546 {
3547 public:
3548 OContinueSFX(Argument *A) : UnaryOpcode(A) {}
3549 std::string toString() const;
3550 Opcode* clone() const
3551 {
3552 return new OContinueSFX(a->clone());
3553 }
3554 };
3555
3556
3557 class OPauseMusic : public Opcode
3558 {
3559 public:
3560 std::string toString() const;
3561 Opcode* clone() const
3562 {
3563 return new OPauseMusic();
3564 }
3565 };
3566
3567 class OResumeMusic : public Opcode
3568 {
3569 public:
3570 std::string toString() const;
3571 Opcode* clone() const
3572 {
3573 return new OResumeMusic();
3574 }
3575 };
3576
3577
3578 //END Audio
3579
3580 class OPlayMIDIRegister : public UnaryOpcode
3581 {
3582 public:
3583 OPlayMIDIRegister(Argument *A) : UnaryOpcode(A) {}
3584 std::string toString() const;
3585 Opcode* clone() const
3586 {
3587 return new OPlayMIDIRegister(a->clone());
3588 }
3589 };
3590
3591 class OPlayEnhancedMusic : public BinaryOpcode
3592 {
3593 public:
3594 OPlayEnhancedMusic(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
3595 std::string toString() const;
3596 Opcode* clone() const
3597 {
3598 return new OPlayEnhancedMusic(a->clone(), b->clone());
3599 }
3600 };
3601
3602 class OPlayEnhancedMusicEx : public BinaryOpcode
3603 {
3604 public:
3605 OPlayEnhancedMusicEx(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
3606 std::string toString() const;
3607 Opcode* clone() const
3608 {
3609 return new OPlayEnhancedMusicEx(a->clone(), b->clone());
3610 }
3611 };
3612
3613 class OGetEnhancedMusicPos : public UnaryOpcode
3614 {
3615 public:
3616 OGetEnhancedMusicPos(Argument *A) : UnaryOpcode(A) {}
3617 std::string toString() const;
3618 Opcode* clone() const
3619 {
3620 return new OGetEnhancedMusicPos(a->clone());
3621 }
3622 };
3623
3624 class OSetEnhancedMusicPos : public UnaryOpcode
3625 {
3626 public:
3627 OSetEnhancedMusicPos(Argument *A) : UnaryOpcode(A) {}
3628 std::string toString() const;
3629 Opcode* clone() const
3630 {
3631 return new OSetEnhancedMusicPos(a->clone());
3632 }
3633 };
3634
3635 class OSetEnhancedMusicSpeed : public UnaryOpcode
3636 {
3637 public:
3638 OSetEnhancedMusicSpeed(Argument *A) : UnaryOpcode(A) {}
3639 std::string toString() const;
3640 Opcode* clone() const
3641 {
3642 return new OSetEnhancedMusicSpeed(a->clone());
3643 }
3644 };
3645
3646 class OGetEnhancedMusicLength : public UnaryOpcode
3647 {
3648 public:
3649 OGetEnhancedMusicLength(Argument *A) : UnaryOpcode(A) {}
3650 std::string toString() const;
3651 Opcode* clone() const
3652 {
3653 return new OGetEnhancedMusicLength(a->clone());
3654 }
3655 };
3656
3657 class OSetEnhancedMusicLoop : public BinaryOpcode
3658 {
3659 public:
3660 OSetEnhancedMusicLoop(Argument* A, Argument *B) : BinaryOpcode(A,B) {}
3661 std::string toString() const;
3662 Opcode* clone() const
3663 {
3664 return new OSetEnhancedMusicLoop(a->clone(), b->clone());
3665 }
3666 };
3667
3668 class OCrossfadeEnhancedMusic : public Opcode
3669 {
3670 public:
3671 OCrossfadeEnhancedMusic() : Opcode() {}
3672 std::string toString() const;
3673 Opcode* clone() const
3674 {
3675 return new OCrossfadeEnhancedMusic();
3676 }
3677 };
3678
3679 class OGetDMapMusicFilename : public BinaryOpcode
3680 {
3681 public:
3682 OGetDMapMusicFilename(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
3683 std::string toString() const;
3684 Opcode* clone() const
3685 {
3686 return new OGetDMapMusicFilename(a->clone(), b->clone());
3687 }
3688 };
3689
3690 class OGetNPCDataInitDLabel : public BinaryOpcode
3691 {
3692 public:
3693 OGetNPCDataInitDLabel(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
3694 std::string toString() const;
3695 Opcode* clone() const
3696 {
3697 return new OGetNPCDataInitDLabel(a->clone(), b->clone());
3698 }
3699 };
3700
3701 class OGetDMapMusicTrack : public UnaryOpcode
3702 {
3703 public:
3704 OGetDMapMusicTrack(Argument *A) : UnaryOpcode(A) {}
3705 std::string toString() const;
3706 Opcode* clone() const
3707 {
3708 return new OGetDMapMusicTrack(a->clone());
3709 }
3710 };
3711
3712 class OSetDMapEnhancedMusic : public Opcode
3713 {
3714 public:
3715 std::string toString() const;
3716 Opcode* clone() const
3717 {
3718 return new OSetDMapEnhancedMusic();
3719 }
3720 };
3721
3722 class OGetSaveName : public UnaryOpcode
3723 {
3724 public:
3725 OGetSaveName(Argument *A) : UnaryOpcode(A) {}
3726 std::string toString() const;
3727 Opcode* clone() const
3728 {
3729 return new OGetSaveName(a->clone());
3730 }
3731 };
3732
3733 class OGetDMapName : public BinaryOpcode
3734 {
3735 public:
3736 OGetDMapName(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
3737 std::string toString() const;
3738 Opcode* clone() const
3739 {
3740 return new OGetDMapName(a->clone(), b->clone());
3741 }
3742 };
3743
3744 class OSetDMapName : public BinaryOpcode
3745 {
3746 public:
3747 OSetDMapName(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
3748 std::string toString() const;
3749 Opcode* clone() const
3750 {
3751 return new OSetDMapName(a->clone(), b->clone());
3752 }
3753 };
3754
3755 class OSetDMapIntro : public BinaryOpcode
3756 {
3757 public:
3758 OSetDMapIntro(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
3759 std::string toString() const;
3760 Opcode* clone() const
3761 {
3762 return new OSetDMapIntro(a->clone(), b->clone());
3763 }
3764 };
3765
3766 class OSetDMapTitle : public BinaryOpcode
3767 {
3768 public:
3769 OSetDMapTitle(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
3770 std::string toString() const;
3771 Opcode* clone() const
3772 {
3773 return new OSetDMapTitle(a->clone(), b->clone());
3774 }
3775 };
3776
3777
3778 class OSetMessage : public BinaryOpcode
3779 {
3780 public:
3781 OSetMessage(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
3782 std::string toString() const;
3783 Opcode* clone() const
3784 {
3785 return new OSetMessage(a->clone(), b->clone());
3786 }
3787 };
3788
3789
3790 class OGetDMapIntro : public BinaryOpcode
3791 {
3792 public:
3793 OGetDMapIntro(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
3794 std::string toString() const;
3795 Opcode* clone() const
3796 {
3797 return new OGetDMapIntro(a->clone(), b->clone());
3798 }
3799 };
3800
3801 class OGetDMapTitle : public BinaryOpcode
3802 {
3803 public:
3804 OGetDMapTitle(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
3805 std::string toString() const;
3806 Opcode* clone() const
3807 {
3808 return new OGetDMapTitle(a->clone(), b->clone());
3809 }
3810 };
3811
3812 class OSetSaveName : public UnaryOpcode
3813 {
3814 public:
3815 OSetSaveName(Argument *A) : UnaryOpcode(A) {}
3816 std::string toString() const;
3817 Opcode* clone() const
3818 {
3819 return new OSetSaveName(a->clone());
3820 }
3821 };
3822
3823 class OGetItemName : public UnaryOpcode
3824 {
3825 public:
3826 OGetItemName(Argument *A) : UnaryOpcode(A) {}
3827 std::string toString() const;
3828 Opcode* clone() const
3829 {
3830 return new OGetItemName(a->clone());
3831 }
3832 };
3833
3834 class OGetNPCName : public UnaryOpcode
3835 {
3836 public:
3837 OGetNPCName(Argument *A) : UnaryOpcode(A) {}
3838 std::string toString() const;
3839 Opcode* clone() const
3840 {
3841 return new OGetNPCName(a->clone());
3842 }
3843 };
3844
3845 class OGetMessage : public BinaryOpcode
3846 {
3847 public:
3848 OGetMessage(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
3849 std::string toString() const;
3850 Opcode* clone() const
3851 {
3852 return new OGetMessage(a->clone(), b->clone());
3853 }
3854 };
3855
3856 class OClearSpritesRegister : public UnaryOpcode
3857 {
3858 public:
3859 OClearSpritesRegister(Argument *A) : UnaryOpcode(A) {}
3860 std::string toString() const;
3861 Opcode* clone() const
3862 {
3863 return new OClearSpritesRegister(a->clone());
3864 }
3865 };
3866
3867 class OMessageRegister : public UnaryOpcode
3868 {
3869 public:
3870 OMessageRegister(Argument *A) : UnaryOpcode(A) {}
3871 std::string toString() const;
3872 Opcode* clone() const
3873 {
3874 return new OMessageRegister(a->clone());
3875 }
3876 };
3877
3878 class OIsSolid : public UnaryOpcode
3879 {
3880 public:
3881 OIsSolid(Argument *A) : UnaryOpcode(A) {}
3882 std::string toString() const;
3883 Opcode* clone() const
3884 {
3885 return new OIsSolid(a->clone());
3886 }
3887 };
3888
3889 class OIsSolidMapdata : public UnaryOpcode
3890 {
3891 public:
3892 OIsSolidMapdata(Argument *A) : UnaryOpcode(A) {}
3893 std::string toString() const;
3894 Opcode* clone() const
3895 {
3896 return new OIsSolidMapdata(a->clone());
3897 }
3898 };
3899
3900 class OIsSolidMapdataLayer : public UnaryOpcode
3901 {
3902 public:
3903 OIsSolidMapdataLayer(Argument *A) : UnaryOpcode(A) {}
3904 std::string toString() const;
3905 Opcode* clone() const
3906 {
3907 return new OIsSolidMapdataLayer(a->clone());
3908 }
3909 };
3910
3911 class OIsSolidLayer : public UnaryOpcode
3912 {
3913 public:
3914 OIsSolidLayer(Argument *A) : UnaryOpcode(A) {}
3915 std::string toString() const;
3916 Opcode* clone() const
3917 {
3918 return new OIsSolidLayer(a->clone());
3919 }
3920 };
3921
3922 class OLoadTmpScr : public UnaryOpcode
3923 {
3924 public:
3925 OLoadTmpScr(Argument *A) : UnaryOpcode(A) {}
3926 std::string toString() const;
3927 Opcode* clone() const
3928 {
3929 return new OLoadTmpScr(a->clone());
3930 }
3931 };
3932
3933 class OLoadScrollScr : public UnaryOpcode
3934 {
3935 public:
3936 OLoadScrollScr(Argument *A) : UnaryOpcode(A) {}
3937 std::string toString() const;
3938 Opcode* clone() const
3939 {
3940 return new OLoadScrollScr(a->clone());
3941 }
3942 };
3943
3944 class OSetSideWarpRegister : public Opcode
3945 {
3946 public:
3947 std::string toString() const;
3948 Opcode* clone() const
3949 {
3950 return new OSetSideWarpRegister();
3951 }
3952 };
3953
3954 class OSetTileWarpRegister : public Opcode
3955 {
3956 public:
3957 std::string toString() const;
3958 Opcode* clone() const
3959 {
3960 return new OSetTileWarpRegister();
3961 }
3962 };
3963
3964 class OGetSideWarpDMap : public UnaryOpcode
3965 {
3966 public:
3967 OGetSideWarpDMap(Argument *A) : UnaryOpcode(A) {}
3968 std::string toString() const;
3969 Opcode* clone() const
3970 {
3971 return new OGetSideWarpDMap(a->clone());
3972 }
3973 };
3974
3975 class OGetSideWarpScreen : public UnaryOpcode
3976 {
3977 public:
3978 OGetSideWarpScreen(Argument *A) : UnaryOpcode(A) {}
3979 std::string toString() const;
3980 Opcode* clone() const
3981 {
3982 return new OGetSideWarpScreen(a->clone());
3983 }
3984 };
3985
3986 class OGetSideWarpType : public UnaryOpcode
3987 {
3988 public:
3989 OGetSideWarpType(Argument *A) : UnaryOpcode(A) {}
3990 std::string toString() const;
3991 Opcode* clone() const
3992 {
3993 return new OGetSideWarpType(a->clone());
3994 }
3995 };
3996
3997 class OGetTileWarpDMap : public UnaryOpcode
3998 {
3999 public:
4000 OGetTileWarpDMap(Argument *A) : UnaryOpcode(A) {}
4001 std::string toString() const;
4002 Opcode* clone() const
4003 {
4004 return new OGetTileWarpDMap(a->clone());
4005 }
4006 };
4007
4008 class OGetTileWarpScreen : public UnaryOpcode
4009 {
4010 public:
4011 OGetTileWarpScreen(Argument *A) : UnaryOpcode(A) {}
4012 std::string toString() const;
4013 Opcode* clone() const
4014 {
4015 return new OGetTileWarpScreen(a->clone());
4016 }
4017 };
4018
4019 class OGetTileWarpType : public UnaryOpcode
4020 {
4021 public:
4022 OGetTileWarpType(Argument *A) : UnaryOpcode(A) {}
4023 std::string toString() const;
4024 Opcode* clone() const
4025 {
4026 return new OGetTileWarpType(a->clone());
4027 }
4028 };
4029
4030 class OLayerScreenRegister : public BinaryOpcode
4031 {
4032 public:
4033 OLayerScreenRegister(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
4034 std::string toString() const;
4035 Opcode* clone() const
4036 {
4037 return new OLayerScreenRegister(a->clone(), b->clone());
4038 }
4039 };
4040
4041 class OLayerMapRegister : public BinaryOpcode
4042 {
4043 public:
4044 OLayerMapRegister(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
4045 std::string toString() const;
4046 Opcode* clone() const
4047 {
4048 return new OLayerMapRegister(a->clone(), b->clone());
4049 }
4050 };
4051
4052 class OTriggerSecrets : public Opcode
4053 {
4054 public:
4055 std::string toString() const;
4056 Opcode* clone() const
4057 {
4058 return new OTriggerSecrets();
4059 }
4060 };
4061
4062 class OTriggerSecretsFor : public UnaryOpcode
4063 {
4064 public:
4065 OTriggerSecretsFor(Argument *A) : UnaryOpcode(A) {}
4066 std::string toString() const;
4067 Opcode *clone() const
4068 {
4069 return new OTriggerSecretsFor(a->clone());
4070 }
4071 };
4072
4073 class OIsValidArray : public UnaryOpcode
4074 {
4075 public:
4076 OIsValidArray(Argument *A) : UnaryOpcode(A) {}
4077 std::string toString() const;
4078 Opcode* clone() const
4079 {
4080 return new OIsValidArray(a->clone());
4081 }
4082 };
4083
4084 class OIsValidItem : public UnaryOpcode
4085 {
4086 public:
4087 OIsValidItem(Argument *A) : UnaryOpcode(A) {}
4088 std::string toString() const;
4089 Opcode* clone() const
4090 {
4091 return new OIsValidItem(a->clone());
4092 }
4093 };
4094
4095 class OIsValidNPC : public UnaryOpcode
4096 {
4097 public:
4098 OIsValidNPC(Argument *A) : UnaryOpcode(A) {}
4099 std::string toString() const;
4100 Opcode* clone() const
4101 {
4102 return new OIsValidNPC(a->clone());
4103 }
4104 };
4105
4106 class OIsValidLWpn : public UnaryOpcode
4107 {
4108 public:
4109 OIsValidLWpn(Argument *A) : UnaryOpcode(A) {}
4110 std::string toString() const;
4111 Opcode* clone() const
4112 {
4113 return new OIsValidLWpn(a->clone());
4114 }
4115 };
4116
4117 class OIsValidEWpn : public UnaryOpcode
4118 {
4119 public:
4120 OIsValidEWpn(Argument *A) : UnaryOpcode(A) {}
4121 std::string toString() const;
4122 Opcode* clone() const
4123 {
4124 return new OIsValidEWpn(a->clone());
4125 }
4126 };
4127
4128 class OMakeAngularLwpn : public UnaryOpcode
4129 {
4130 public:
4131 OMakeAngularLwpn(Argument *A) : UnaryOpcode(A) {}
4132 std::string toString() const;
4133 Opcode* clone() const
4134 {
4135 return new OMakeAngularLwpn(a->clone());
4136 }
4137 };
4138
4139 class OMakeAngularEwpn : public UnaryOpcode
4140 {
4141 public:
4142 OMakeAngularEwpn(Argument *A) : UnaryOpcode(A) {}
4143 std::string toString() const;
4144 Opcode* clone() const
4145 {
4146 return new OMakeAngularEwpn(a->clone());
4147 }
4148 };
4149
4150 class OMakeDirectionalLwpn : public UnaryOpcode
4151 {
4152 public:
4153 OMakeDirectionalLwpn(Argument *A) : UnaryOpcode(A) {}
4154 std::string toString() const;
4155 Opcode* clone() const
4156 {
4157 return new OMakeDirectionalLwpn(a->clone());
4158 }
4159 };
4160
4161 class OMakeDirectionalEwpn : public UnaryOpcode
4162 {
4163 public:
4164 OMakeDirectionalEwpn(Argument *A) : UnaryOpcode(A) {}
4165 std::string toString() const;
4166 Opcode* clone() const
4167 {
4168 return new OMakeDirectionalEwpn(a->clone());
4169 }
4170 };
4171
4172 class OUseSpriteLWpn : public UnaryOpcode
4173 {
4174 public:
4175 OUseSpriteLWpn(Argument *A) : UnaryOpcode(A) {}
4176 std::string toString() const;
4177 Opcode* clone() const
4178 {
4179 return new OUseSpriteLWpn(a->clone());
4180 }
4181 };
4182
4183 class OUseSpriteEWpn : public UnaryOpcode
4184 {
4185 public:
4186 OUseSpriteEWpn(Argument *A) : UnaryOpcode(A) {}
4187 std::string toString() const;
4188 Opcode* clone() const
4189 {
4190 return new OUseSpriteEWpn(a->clone());
4191 }
4192 };
4193
4194 class ORectangleRegister : public Opcode
4195 {
4196 public:
4197 std::string toString() const;
4198 Opcode* clone() const
4199 {
4200 return new ORectangleRegister();
4201 }
4202 };
4203
4204 class OFrameRegister : public Opcode
4205 {
4206 public:
4207 std::string toString() const;
4208 Opcode* clone() const
4209 {
4210 return new OFrameRegister();
4211 }
4212 };
4213
4214 class OCircleRegister : public Opcode
4215 {
4216 public:
4217 std::string toString() const;
4218 Opcode* clone() const
4219 {
4220 return new OCircleRegister();
4221 }
4222 };
4223
4224 class OArcRegister : public Opcode
4225 {
4226 public:
4227 std::string toString() const;
4228 Opcode* clone() const
4229 {
4230 return new OArcRegister();
4231 }
4232 };
4233
4234 class OEllipseRegister : public Opcode
4235 {
4236 public:
4237 std::string toString() const;
4238 Opcode* clone() const
4239 {
4240 return new OEllipseRegister();
4241 }
4242 };
4243
4244 class OLineRegister : public Opcode
4245 {
4246 public:
4247 std::string toString() const;
4248 Opcode* clone() const
4249 {
4250 return new OLineRegister();
4251 }
4252 };
4253
4254 class OSplineRegister : public Opcode
4255 {
4256 public:
4257 std::string toString() const;
4258 Opcode* clone() const
4259 {
4260 return new OSplineRegister();
4261 }
4262 };
4263
4264 class OPutPixelRegister : public Opcode
4265 {
4266 public:
4267 std::string toString() const;
4268 Opcode* clone() const
4269 {
4270 return new OPutPixelRegister();
4271 }
4272 };
4273
4274 class OPutPixelArrayRegister : public Opcode
4275 {
4276 public:
4277 std::string toString() const;
4278 Opcode* clone() const
4279 {
4280 return new OPutPixelArrayRegister();
4281 }
4282 };
4283
4284 class OPutTileArrayRegister : public Opcode
4285 {
4286 public:
4287 std::string toString() const;
4288 Opcode* clone() const
4289 {
4290 return new OPutTileArrayRegister();
4291 }
4292 };
4293
4294 class OPutLinesArrayRegister : public Opcode
4295 {
4296 public:
4297 std::string toString() const;
4298 Opcode* clone() const
4299 {
4300 return new OPutLinesArrayRegister();
4301 }
4302 };
4303
4304 class OFastComboArrayRegister : public Opcode
4305 {
4306 public:
4307 std::string toString() const;
4308 Opcode* clone() const
4309 {
4310 return new OFastComboArrayRegister();
4311 }
4312 };
4313
4314 class ODrawCharRegister : public Opcode
4315 {
4316 public:
4317 std::string toString() const;
4318 Opcode* clone() const
4319 {
4320 return new ODrawCharRegister();
4321 }
4322 };
4323
4324 class ODrawIntRegister : public Opcode
4325 {
4326 public:
4327 std::string toString() const;
4328 Opcode* clone() const
4329 {
4330 return new ODrawIntRegister();
4331 }
4332 };
4333
4334 class ODrawTileRegister : public Opcode
4335 {
4336 public:
4337 std::string toString() const;
4338 Opcode* clone() const
4339 {
4340 return new ODrawTileRegister();
4341 }
4342 };
4343
4344 class ODrawTileCloakedRegister : public Opcode
4345 {
4346 public:
4347 std::string toString() const;
4348 Opcode* clone() const
4349 {
4350 return new ODrawTileCloakedRegister();
4351 }
4352 };
4353
4354 class ODrawComboRegister : public Opcode
4355 {
4356 public:
4357 std::string toString() const;
4358 Opcode* clone() const
4359 {
4360 return new ODrawComboRegister();
4361 }
4362 };
4363
4364 class ODrawComboCloakedRegister : public Opcode
4365 {
4366 public:
4367 std::string toString() const;
4368 Opcode* clone() const
4369 {
4370 return new ODrawComboCloakedRegister();
4371 }
4372 };
4373
4374 class OQuadRegister : public Opcode
4375 {
4376 public:
4377 std::string toString() const;
4378 Opcode* clone() const
4379 {
4380 return new OQuadRegister();
4381 }
4382 };
4383
4384 class OTriangleRegister : public Opcode
4385 {
4386 public:
4387 std::string toString() const;
4388 Opcode* clone() const
4389 {
4390 return new OTriangleRegister();
4391 }
4392 };
4393
4394 class OQuad3DRegister : public Opcode
4395 {
4396 public:
4397 std::string toString() const;
4398 Opcode* clone() const
4399 {
4400 return new OQuad3DRegister();
4401 }
4402 };
4403
4404 class OTriangle3DRegister : public Opcode
4405 {
4406 public:
4407 std::string toString() const;
4408 Opcode* clone() const
4409 {
4410 return new OTriangle3DRegister();
4411 }
4412 };
4413
4414 class OFastTileRegister : public Opcode
4415 {
4416 public:
4417 std::string toString() const;
4418 Opcode* clone() const
4419 {
4420 return new OFastTileRegister();
4421 }
4422 };
4423
4424 class OFastComboRegister : public Opcode
4425 {
4426 public:
4427 std::string toString() const;
4428 Opcode* clone() const
4429 {
4430 return new OFastComboRegister();
4431 }
4432 };
4433
4434 class ODrawStringRegister : public Opcode
4435 {
4436 public:
4437 std::string toString() const;
4438 Opcode* clone() const
4439 {
4440 return new ODrawStringRegister();
4441 }
4442 };
4443
4444 class ODrawString2Register : public Opcode
4445 {
4446 public:
4447 std::string toString() const;
4448 Opcode* clone() const
4449 {
4450 return new ODrawString2Register();
4451 }
4452 };
4453
4454 class ODrawLayerRegister : public Opcode
4455 {
4456 public:
4457 std::string toString() const;
4458 Opcode* clone() const
4459 {
4460 return new ODrawLayerRegister();
4461 }
4462 };
4463
4464 class ODrawScreenRegister : public Opcode
4465 {
4466 public:
4467 std::string toString() const;
4468 Opcode* clone() const
4469 {
4470 return new ODrawScreenRegister();
4471 }
4472 };
4473
4474 class ODrawBitmapRegister : public Opcode
4475 {
4476 public:
4477 std::string toString() const;
4478 Opcode* clone() const
4479 {
4480 return new ODrawBitmapRegister();
4481 }
4482 };
4483
4484
4485 class ODrawBitmapExRegister : public Opcode
4486 {
4487 public:
4488 std::string toString() const;
4489 Opcode* clone() const
4490 {
4491 return new ODrawBitmapExRegister();
4492 }
4493 };
4494
4495 class OSetRenderTargetRegister : public Opcode
4496 {
4497 public:
4498 std::string toString() const;
4499 Opcode* clone() const
4500 {
4501 return new OSetRenderTargetRegister();
4502 }
4503 };
4504
4505 class OSetDepthBufferRegister : public Opcode
4506 {
4507 public:
4508 std::string toString() const;
4509 Opcode* clone() const
4510 {
4511 return new OSetDepthBufferRegister();
4512 }
4513 };
4514
4515 class OGetDepthBufferRegister : public Opcode
4516 {
4517 public:
4518 std::string toString() const;
4519 Opcode* clone() const
4520 {
4521 return new OGetDepthBufferRegister();
4522 }
4523 };
4524
4525 class OSetColorBufferRegister : public Opcode
4526 {
4527 public:
4528 std::string toString() const;
4529 Opcode* clone() const
4530 {
4531 return new OSetColorBufferRegister();
4532 }
4533 };
4534
4535 class OGetColorBufferRegister : public Opcode
4536 {
4537 public:
4538 std::string toString() const;
4539 Opcode* clone() const
4540 {
4541 return new OGetColorBufferRegister();
4542 }
4543 };
4544
4545 class OCopyTileRegister : public BinaryOpcode
4546 {
4547 public:
4548 OCopyTileRegister(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
4549 std::string toString() const;
4550 Opcode* clone() const
4551 {
4552 return new OCopyTileRegister(a->clone(),b->clone());
4553 }
4554 };
4555
4556 class Ostrcpy : public BinaryOpcode
4557 {
4558 public:
4559 Ostrcpy(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
4560 std::string toString() const;
4561 Opcode* clone() const
4562 {
4563 return new Ostrcpy(a->clone(),b->clone());
4564 }
4565 };
4566
4567 class oARRAYCOPY : public BinaryOpcode
4568 {
4569 public:
4570 oARRAYCOPY(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
4571 std::string toString() const;
4572 Opcode* clone() const
4573 {
4574 return new oARRAYCOPY(a->clone(),b->clone());
4575 }
4576 };
4577
4578
4579 class OOverlayTileRegister : public BinaryOpcode
4580 {
4581 public:
4582 OOverlayTileRegister(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
4583 std::string toString() const;
4584 Opcode* clone() const
4585 {
4586 return new OOverlayTileRegister(a->clone(),b->clone());
4587 }
4588 };
4589
4590 class OSwapTileRegister : public BinaryOpcode
4591 {
4592 public:
4593 OSwapTileRegister(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
4594 std::string toString() const;
4595 Opcode* clone() const
4596 {
4597 return new OSwapTileRegister(a->clone(),b->clone());
4598 }
4599 };
4600
4601 class OClearTileRegister : public UnaryOpcode
4602 {
4603 public:
4604 OClearTileRegister(Argument *A) : UnaryOpcode(A) {}
4605 std::string toString() const;
4606 Opcode* clone() const
4607 {
4608 return new OClearTileRegister(a->clone());
4609 }
4610 };
4611
4612 class OAllocateMemRegister : public BinaryOpcode
4613 {
4614 public:
4615 OAllocateMemRegister(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
4616 std::string toString() const;
4617 Opcode* clone() const
4618 {
4619 return new OAllocateMemRegister(a->clone(),b->clone());
4620 }
4621 };
4622
4623 class OAllocateMemImmediate : public TernaryOpcode
4624 {
4625 public:
4626 2241 OAllocateMemImmediate(Argument *A, Argument *B, Argument* C = new LiteralArgument(0)) : TernaryOpcode(A,B,C) {}
4627 std::string toString() const;
4628 208 Opcode* clone() const
4629 {
4630
4/8
✓ Branch 0 taken 208 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 208 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 208 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 208 times.
✗ Branch 7 not taken.
208 return new OAllocateMemImmediate(a->clone(),b->clone(),c->clone());
4631 }
4632 };
4633
4634 class OAllocateGlobalMemImmediate : public TernaryOpcode
4635 {
4636 public:
4637 52 OAllocateGlobalMemImmediate(Argument *A, Argument* B, Argument* C = new LiteralArgument(0)) : TernaryOpcode(A,B,C) {}
4638 std::string toString() const;
4639 26 Opcode* clone() const
4640 {
4641
4/8
✓ Branch 0 taken 26 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 26 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 26 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 26 times.
✗ Branch 7 not taken.
26 return new OAllocateGlobalMemImmediate(a->clone(),b->clone(),c->clone());
4642 }
4643 };
4644
4645 class OAllocateGlobalMemRegister : public BinaryOpcode
4646 {
4647 public:
4648 OAllocateGlobalMemRegister(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
4649 std::string toString() const;
4650 Opcode* clone() const
4651 {
4652 return new OAllocateGlobalMemRegister(a->clone(),b->clone());
4653 }
4654 };
4655
4656 class ODeallocateMemRegister : public UnaryOpcode
4657 {
4658 public:
4659 3041 ODeallocateMemRegister(Argument *A) : UnaryOpcode(A) {}
4660 std::string toString() const;
4661 223 Opcode* clone() const
4662 {
4663
2/4
✓ Branch 0 taken 223 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 223 times.
✗ Branch 3 not taken.
223 return new ODeallocateMemRegister(a->clone());
4664 }
4665 };
4666
4667 class ODeallocateMemImmediate : public UnaryOpcode
4668 {
4669 public:
4670 ODeallocateMemImmediate(Argument *A) : UnaryOpcode(A) {}
4671 std::string toString() const;
4672 Opcode* clone() const
4673 {
4674 return new ODeallocateMemImmediate(a->clone());
4675 }
4676 };
4677
4678 class OResizeArrayRegister : public BinaryOpcode
4679 {
4680 public:
4681 OResizeArrayRegister(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
4682 std::string toString() const;
4683 Opcode* clone() const
4684 {
4685 return new OResizeArrayRegister(a->clone(), b->clone());
4686 }
4687 };
4688 class OOwnArrayRegister : public UnaryOpcode
4689 {
4690 public:
4691 OOwnArrayRegister(Argument *A) : UnaryOpcode(A) {}
4692 std::string toString() const;
4693 Opcode* clone() const
4694 {
4695 return new OOwnArrayRegister(a->clone());
4696 }
4697 };
4698 class ODestroyArrayRegister : public UnaryOpcode
4699 {
4700 public:
4701 ODestroyArrayRegister(Argument *A) : UnaryOpcode(A) {}
4702 std::string toString() const;
4703 Opcode* clone() const
4704 {
4705 return new ODestroyArrayRegister(a->clone());
4706 }
4707 };
4708
4709 class OSave : public Opcode
4710 {
4711 public:
4712 std::string toString() const;
4713 Opcode* clone() const
4714 {
4715 return new OSave();
4716 }
4717 };
4718
4719 class OGetScreenFlags : public UnaryOpcode
4720 {
4721 public:
4722 OGetScreenFlags(Argument *A) : UnaryOpcode(A) {}
4723 std::string toString() const;
4724 Opcode* clone() const
4725 {
4726 return new OGetScreenFlags(a->clone());
4727 }
4728 };
4729
4730 class OGetScreenEFlags : public UnaryOpcode
4731 {
4732 public:
4733 OGetScreenEFlags(Argument *A) : UnaryOpcode(A) {}
4734 std::string toString() const;
4735 Opcode* clone() const
4736 {
4737 return new OGetScreenEFlags(a->clone());
4738 }
4739 };
4740
4741 class OEnd : public Opcode
4742 {
4743 public:
4744 std::string toString() const;
4745 Opcode* clone() const
4746 {
4747 return new OEnd();
4748 }
4749 };
4750
4751 class OGameReload : public Opcode
4752 {
4753 public:
4754 std::string toString() const;
4755 Opcode* clone() const
4756 {
4757 return new OGameReload();
4758 }
4759 };
4760
4761 class OGameContinue : public Opcode
4762 {
4763 public:
4764 std::string toString() const;
4765 Opcode* clone() const
4766 {
4767 return new OGameContinue();
4768 }
4769 };
4770
4771 class OGameSaveQuit : public Opcode
4772 {
4773 public:
4774 std::string toString() const;
4775 Opcode* clone() const
4776 {
4777 return new OGameSaveQuit();
4778 }
4779 };
4780
4781 class OGameSaveContinue : public Opcode
4782 {
4783 public:
4784 std::string toString() const;
4785 Opcode* clone() const
4786 {
4787 return new OGameSaveContinue();
4788 }
4789 };
4790
4791 class OShowF6Screen : public Opcode
4792 {
4793 public:
4794 std::string toString() const;
4795 Opcode* clone() const
4796 {
4797 return new OShowF6Screen();
4798 }
4799 };
4800
4801 class OComboTile : public BinaryOpcode
4802 {
4803 public:
4804 OComboTile(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
4805 std::string toString() const;
4806 Opcode* clone() const
4807 {
4808 return new OComboTile(a->clone(), b->clone());
4809 }
4810 };
4811
4812 class OBreakShield : public UnaryOpcode
4813 {
4814 public:
4815 OBreakShield(Argument *A) : UnaryOpcode(A) {}
4816 std::string toString() const;
4817 Opcode* clone() const
4818 {
4819 return new OBreakShield(a->clone());
4820 }
4821 };
4822
4823 class OShowSaveScreen : public UnaryOpcode
4824 {
4825 public:
4826 OShowSaveScreen(Argument *A) : UnaryOpcode(A) {}
4827 std::string toString() const;
4828 Opcode* clone() const
4829 {
4830 return new OShowSaveScreen(a->clone());
4831 }
4832 };
4833
4834 class OShowSaveQuitScreen : public Opcode
4835 {
4836 public:
4837 std::string toString() const;
4838 Opcode* clone() const
4839 {
4840 return new OShowSaveQuitScreen();
4841 }
4842 };
4843
4844 class OSelectAWeaponRegister : public UnaryOpcode
4845 {
4846 public:
4847 OSelectAWeaponRegister(Argument *A) : UnaryOpcode(A) {}
4848 std::string toString() const;
4849 Opcode* clone() const
4850 {
4851 return new OSelectAWeaponRegister(a->clone());
4852 }
4853 };
4854
4855 class OSelectBWeaponRegister : public UnaryOpcode
4856 {
4857 public:
4858 OSelectBWeaponRegister(Argument *A) : UnaryOpcode(A) {}
4859 std::string toString() const;
4860 Opcode* clone() const
4861 {
4862 return new OSelectBWeaponRegister(a->clone());
4863 }
4864 };
4865
4866 class OSelectXWeaponRegister : public UnaryOpcode
4867 {
4868 public:
4869 OSelectXWeaponRegister(Argument *A) : UnaryOpcode(A) {}
4870 std::string toString() const;
4871 Opcode* clone() const
4872 {
4873 return new OSelectXWeaponRegister(a->clone());
4874 }
4875 };
4876
4877 class OSelectYWeaponRegister : public UnaryOpcode
4878 {
4879 public:
4880 OSelectYWeaponRegister(Argument *A) : UnaryOpcode(A) {}
4881 std::string toString() const;
4882 Opcode* clone() const
4883 {
4884 return new OSelectYWeaponRegister(a->clone());
4885 }
4886 };
4887
4888 class OGetFFCScript : public UnaryOpcode
4889 {
4890 public:
4891 OGetFFCScript(Argument *A) : UnaryOpcode(A) {}
4892 std::string toString() const;
4893 Opcode* clone() const
4894 {
4895 return new OGetFFCScript(a->clone());
4896 }
4897 };
4898
4899 class OGetComboScript : public UnaryOpcode
4900 {
4901 public:
4902 OGetComboScript(Argument *A) : UnaryOpcode(A) {}
4903 std::string toString() const;
4904 Opcode* clone() const
4905 {
4906 return new OGetComboScript(a->clone());
4907 }
4908 };
4909
4910 class OGetItemScript : public UnaryOpcode
4911 {
4912 public:
4913 OGetItemScript(Argument *A) : UnaryOpcode(A) {}
4914 std::string toString() const;
4915 Opcode* clone() const
4916 {
4917 return new OGetItemScript(a->clone());
4918 }
4919 };
4920
4921
4922
4923 //2,54
4924
4925 class OZapIn : public Opcode
4926 {
4927 public:
4928 std::string toString() const;
4929 Opcode* clone() const
4930 {
4931 return new OZapIn();
4932 }
4933 };
4934
4935 class OZapOut : public Opcode
4936 {
4937 public:
4938 std::string toString() const;
4939 Opcode* clone() const
4940 {
4941 return new OZapOut();
4942 }
4943 };
4944
4945
4946 class OGreyscaleOn : public Opcode
4947 {
4948 public:
4949 std::string toString() const;
4950 Opcode* clone() const
4951 {
4952 return new OGreyscaleOn();
4953 }
4954 };
4955
4956 class OGreyscaleOff : public Opcode
4957 {
4958 public:
4959 std::string toString() const;
4960 Opcode* clone() const
4961 {
4962 return new OGreyscaleOff();
4963 }
4964 };
4965
4966
4967 //These need to be unary opcodes that accept bool linkvisible.
4968 class OWavyIn : public Opcode
4969 {
4970 public:
4971 std::string toString() const;
4972 Opcode* clone() const
4973 {
4974 return new OWavyIn();
4975 }
4976 };
4977
4978
4979 class OWavyOut : public Opcode
4980 {
4981 public:
4982 std::string toString() const;
4983 Opcode* clone() const
4984 {
4985 return new OWavyOut();
4986 }
4987 };
4988
4989 class OOpenWipe : public Opcode
4990 {
4991 public:
4992 std::string toString() const;
4993 Opcode* clone() const
4994 {
4995 return new OOpenWipe();
4996 }
4997 };
4998
4999 class OCloseWipe : public Opcode
5000 {
5001 public:
5002 std::string toString() const;
5003 Opcode* clone() const
5004 {
5005 return new OCloseWipe();
5006 }
5007 };
5008
5009 class OOpenWipeShape : public UnaryOpcode
5010 {
5011 public:
5012 OOpenWipeShape(Argument *A) : UnaryOpcode(A) {}
5013 std::string toString() const;
5014 Opcode* clone() const
5015 {
5016 return new OOpenWipeShape(a->clone());
5017 }
5018 };
5019
5020 class OCloseWipeShape : public UnaryOpcode
5021 {
5022 public:
5023 OCloseWipeShape(Argument *A) : UnaryOpcode(A) {}
5024 std::string toString() const;
5025 Opcode* clone() const
5026 {
5027 return new OCloseWipeShape(a->clone());
5028 }
5029 };
5030
5031 class OGetFFCPointer : public UnaryOpcode
5032 {
5033 public:
5034 OGetFFCPointer(Argument *A) : UnaryOpcode(A) {}
5035 std::string toString() const;
5036 Opcode* clone() const
5037 {
5038 return new OGetFFCPointer(a->clone());
5039 }
5040 };
5041
5042 class OSetFFCPointer : public UnaryOpcode
5043 {
5044 public:
5045 OSetFFCPointer(Argument *A) : UnaryOpcode(A) {}
5046 std::string toString() const;
5047 Opcode* clone() const
5048 {
5049 return new OSetFFCPointer(a->clone());
5050 }
5051 };
5052
5053
5054 class OGetNPCPointer : public UnaryOpcode
5055 {
5056 public:
5057 OGetNPCPointer(Argument *A) : UnaryOpcode(A) {}
5058 std::string toString() const;
5059 Opcode* clone() const
5060 {
5061 return new OGetNPCPointer(a->clone());
5062 }
5063 };
5064
5065
5066 class OSetNPCPointer : public UnaryOpcode
5067 {
5068 public:
5069 OSetNPCPointer(Argument *A) : UnaryOpcode(A) {}
5070 std::string toString() const;
5071 Opcode* clone() const
5072 {
5073 return new OSetNPCPointer(a->clone());
5074 }
5075 };
5076
5077
5078 class OGetLWeaponPointer : public UnaryOpcode
5079 {
5080 public:
5081 OGetLWeaponPointer(Argument *A) : UnaryOpcode(A) {}
5082 std::string toString() const;
5083 Opcode* clone() const
5084 {
5085 return new OGetLWeaponPointer(a->clone());
5086 }
5087 };
5088
5089
5090 class OSetLWeaponPointer : public UnaryOpcode
5091 {
5092 public:
5093 OSetLWeaponPointer(Argument *A) : UnaryOpcode(A) {}
5094 std::string toString() const;
5095 Opcode* clone() const
5096 {
5097 return new OSetLWeaponPointer(a->clone());
5098 }
5099 };
5100
5101
5102 class OGetEWeaponPointer : public UnaryOpcode
5103 {
5104 public:
5105 OGetEWeaponPointer(Argument *A) : UnaryOpcode(A) {}
5106 std::string toString() const;
5107 Opcode* clone() const
5108 {
5109 return new OGetEWeaponPointer(a->clone());
5110 }
5111 };
5112
5113
5114 class OSetEWeaponPointer : public UnaryOpcode
5115 {
5116 public:
5117 OSetEWeaponPointer(Argument *A) : UnaryOpcode(A) {}
5118 std::string toString() const;
5119 Opcode* clone() const
5120 {
5121 return new OSetEWeaponPointer(a->clone());
5122 }
5123 };
5124
5125
5126 class OGetItemPointer : public UnaryOpcode
5127 {
5128 public:
5129 OGetItemPointer(Argument *A) : UnaryOpcode(A) {}
5130 std::string toString() const;
5131 Opcode* clone() const
5132 {
5133 return new OGetItemPointer(a->clone());
5134 }
5135 };
5136
5137
5138 class OSetItemPointer : public UnaryOpcode
5139 {
5140 public:
5141 OSetItemPointer(Argument *A) : UnaryOpcode(A) {}
5142 std::string toString() const;
5143 Opcode* clone() const
5144 {
5145 return new OSetItemPointer(a->clone());
5146 }
5147 };
5148
5149
5150 class OGetItemDataPointer : public UnaryOpcode
5151 {
5152 public:
5153 OGetItemDataPointer(Argument *A) : UnaryOpcode(A) {}
5154 std::string toString() const;
5155 Opcode* clone() const
5156 {
5157 return new OGetItemDataPointer(a->clone());
5158 }
5159 };
5160
5161
5162 class OSetItemDataPointer : public UnaryOpcode
5163 {
5164 public:
5165 OSetItemDataPointer(Argument *A) : UnaryOpcode(A) {}
5166 std::string toString() const;
5167 Opcode* clone() const
5168 {
5169 return new OSetItemDataPointer(a->clone());
5170 }
5171 };
5172
5173
5174 class OGetBoolPointer : public UnaryOpcode
5175 {
5176 public:
5177 OGetBoolPointer(Argument *A) : UnaryOpcode(A) {}
5178 std::string toString() const;
5179 Opcode* clone() const
5180 {
5181 return new OGetBoolPointer(a->clone());
5182 }
5183 };
5184
5185
5186 class OSetBoolPointer : public UnaryOpcode
5187 {
5188 public:
5189 OSetBoolPointer(Argument *A) : UnaryOpcode(A) {}
5190 std::string toString() const;
5191 Opcode* clone() const
5192 {
5193 return new OSetBoolPointer(a->clone());
5194 }
5195 };
5196
5197
5198 class OGetScreenDoor : public UnaryOpcode
5199 {
5200 public:
5201 OGetScreenDoor(Argument *A) : UnaryOpcode(A) {}
5202 std::string toString() const;
5203 Opcode* clone() const
5204 {
5205 return new OGetScreenDoor(a->clone());
5206 }
5207 };
5208
5209
5210 class OGetScreenEnemy : public UnaryOpcode
5211 {
5212 public:
5213 OGetScreenEnemy(Argument *A) : UnaryOpcode(A) {}
5214 std::string toString() const;
5215 Opcode* clone() const
5216 {
5217 return new OGetScreenEnemy(a->clone());
5218 }
5219 };
5220
5221 class OGetScreenLayerOpacity : public UnaryOpcode
5222 {
5223 public:
5224 OGetScreenLayerOpacity(Argument *A) : UnaryOpcode(A) {}
5225 std::string toString() const;
5226 Opcode* clone() const
5227 {
5228 return new OGetScreenLayerOpacity(a->clone());
5229 }
5230 };
5231 class OGetScreenSecretCombo : public UnaryOpcode
5232 {
5233 public:
5234 OGetScreenSecretCombo(Argument *A) : UnaryOpcode(A) {}
5235 std::string toString() const;
5236 Opcode* clone() const
5237 {
5238 return new OGetScreenSecretCombo(a->clone());
5239 }
5240 };
5241 class OGetScreenSecretCSet : public UnaryOpcode
5242 {
5243 public:
5244 OGetScreenSecretCSet(Argument *A) : UnaryOpcode(A) {}
5245 std::string toString() const;
5246 Opcode* clone() const
5247 {
5248 return new OGetScreenSecretCSet(a->clone());
5249 }
5250 };
5251 class OGetScreenSecretFlag : public UnaryOpcode
5252 {
5253 public:
5254 OGetScreenSecretFlag(Argument *A) : UnaryOpcode(A) {}
5255 std::string toString() const;
5256 Opcode* clone() const
5257 {
5258 return new OGetScreenSecretFlag(a->clone());
5259 }
5260 };
5261 class OGetScreenLayerMap : public UnaryOpcode
5262 {
5263 public:
5264 OGetScreenLayerMap(Argument *A) : UnaryOpcode(A) {}
5265 std::string toString() const;
5266 Opcode* clone() const
5267 {
5268 return new OGetScreenLayerMap(a->clone());
5269 }
5270 };
5271 class OGetScreenLayerScreen : public UnaryOpcode
5272 {
5273 public:
5274 OGetScreenLayerScreen(Argument *A) : UnaryOpcode(A) {}
5275 std::string toString() const;
5276 Opcode* clone() const
5277 {
5278 return new OGetScreenLayerScreen(a->clone());
5279 }
5280 };
5281 class OGetScreenPath : public UnaryOpcode
5282 {
5283 public:
5284 OGetScreenPath(Argument *A) : UnaryOpcode(A) {}
5285 std::string toString() const;
5286 Opcode* clone() const
5287 {
5288 return new OGetScreenPath(a->clone());
5289 }
5290 };
5291 class OGetScreenWarpReturnX : public UnaryOpcode
5292 {
5293 public:
5294 OGetScreenWarpReturnX(Argument *A) : UnaryOpcode(A) {}
5295 std::string toString() const;
5296 Opcode* clone() const
5297 {
5298 return new OGetScreenWarpReturnX(a->clone());
5299 }
5300 };
5301 class OGetScreenWarpReturnY : public UnaryOpcode
5302 {
5303 public:
5304 OGetScreenWarpReturnY(Argument *A) : UnaryOpcode(A) {}
5305 std::string toString() const;
5306 Opcode* clone() const
5307 {
5308 return new OGetScreenWarpReturnY(a->clone());
5309 }
5310 };
5311
5312 class OTriggerSecretRegister : public UnaryOpcode
5313 {
5314 public:
5315 OTriggerSecretRegister(Argument *A) : UnaryOpcode(A) {}
5316 std::string toString() const;
5317 Opcode* clone() const
5318 {
5319 return new OTriggerSecretRegister(a->clone());
5320 }
5321 };
5322
5323 class OPolygonRegister : public Opcode
5324 {
5325 public:
5326 std::string toString() const;
5327 Opcode* clone() const
5328 {
5329 return new OPolygonRegister();
5330 }
5331 };
5332
5333 class OBMPPolygonRegister : public Opcode
5334 {
5335 public:
5336 std::string toString() const;
5337 Opcode* clone() const
5338 {
5339 return new OBMPPolygonRegister();
5340 }
5341 };
5342
5343 class ONDataBaseTile : public BinaryOpcode
5344 {
5345 public:
5346 ONDataBaseTile(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
5347 std::string toString() const;
5348 Opcode* clone() const
5349 {
5350 return new ONDataBaseTile(a->clone(), b->clone());
5351 }
5352 };
5353
5354 class ONDataEHeight : public BinaryOpcode
5355 {
5356 public:
5357 ONDataEHeight(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
5358 std::string toString() const;
5359 Opcode* clone() const
5360 {
5361 return new ONDataEHeight(a->clone(), b->clone());
5362 }
5363 };
5364
5365 //one input, no return
5366 class ONDataFlags : public BinaryOpcode
5367 {
5368 public:
5369 ONDataFlags(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
5370 std::string toString() const;
5371 Opcode* clone() const
5372 {
5373 return new ONDataFlags(a->clone(), b->clone());
5374 }
5375 };
5376 //one input, no return
5377 class ONDataFlags2 : public BinaryOpcode
5378 {
5379 public:
5380 ONDataFlags2(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
5381 std::string toString() const;
5382 Opcode* clone() const
5383 {
5384 return new ONDataFlags2(a->clone(), b->clone());
5385 }
5386 };
5387 //one input, no return
5388 class ONDataWidth : public BinaryOpcode
5389 {
5390 public:
5391 ONDataWidth(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
5392 std::string toString() const;
5393 Opcode* clone() const
5394 {
5395 return new ONDataWidth(a->clone(), b->clone());
5396 }
5397 };
5398 //one input, no return
5399 class ONDataHeight : public BinaryOpcode
5400 {
5401 public:
5402 ONDataHeight(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
5403 std::string toString() const;
5404 Opcode* clone() const
5405 {
5406 return new ONDataHeight(a->clone(), b->clone());
5407 }
5408 };
5409 //one input, no return
5410 class ONDataTile : public BinaryOpcode
5411 {
5412 public:
5413 ONDataTile(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
5414 std::string toString() const;
5415 Opcode* clone() const
5416 {
5417 return new ONDataTile(a->clone(), b->clone());
5418 }
5419 };
5420 //one input, no return
5421 class ONDataSWidth : public BinaryOpcode
5422 {
5423 public:
5424 ONDataSWidth(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
5425 std::string toString() const;
5426 Opcode* clone() const
5427 {
5428 return new ONDataSWidth(a->clone(), b->clone());
5429 }
5430 };
5431 //one input, no return
5432 class ONDataSHeight : public BinaryOpcode
5433 {
5434 public:
5435 ONDataSHeight(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
5436 std::string toString() const;
5437 Opcode* clone() const
5438 {
5439 return new ONDataSHeight(a->clone(), b->clone());
5440 }
5441 };
5442 //one input, no return
5443 class ONDataETile : public BinaryOpcode
5444 {
5445 public:
5446 ONDataETile(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
5447 std::string toString() const;
5448 Opcode* clone() const
5449 {
5450 return new ONDataETile(a->clone(), b->clone());
5451 }
5452 };
5453 //one input, no return
5454 class ONDataEWidth : public BinaryOpcode
5455 {
5456 public:
5457 ONDataEWidth(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
5458 std::string toString() const;
5459 Opcode* clone() const
5460 {
5461 return new ONDataEWidth(a->clone(), b->clone());
5462 }
5463 };
5464 //one input, no return
5465 class ONDataHP : public BinaryOpcode
5466 {
5467 public:
5468 ONDataHP(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
5469 std::string toString() const;
5470 Opcode* clone() const
5471 {
5472 return new ONDataHP(a->clone(), b->clone());
5473 }
5474 };
5475 //one input, no return
5476 class ONDataFamily : public BinaryOpcode
5477 {
5478 public:
5479 ONDataFamily(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
5480 std::string toString() const;
5481 Opcode* clone() const
5482 {
5483 return new ONDataFamily(a->clone(), b->clone());
5484 }
5485 };
5486 //one input, no return
5487 class ONDataCSet : public BinaryOpcode
5488 {
5489 public:
5490 ONDataCSet(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
5491 std::string toString() const;
5492 Opcode* clone() const
5493 {
5494 return new ONDataCSet(a->clone(), b->clone());
5495 }
5496 };
5497 //one input, no return
5498 class ONDataAnim : public BinaryOpcode
5499 {
5500 public:
5501 ONDataAnim(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
5502 std::string toString() const;
5503 Opcode* clone() const
5504 {
5505 return new ONDataAnim(a->clone(), b->clone());
5506 }
5507 };
5508 //one input, no return
5509 class ONDataEAnim : public BinaryOpcode
5510 {
5511 public:
5512 ONDataEAnim(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
5513 std::string toString() const;
5514 Opcode* clone() const
5515 {
5516 return new ONDataEAnim(a->clone(), b->clone());
5517 }
5518 };
5519 //one input, no return
5520 class ONDataFramerate : public BinaryOpcode
5521 {
5522 public:
5523 ONDataFramerate(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
5524 std::string toString() const;
5525 Opcode* clone() const
5526 {
5527 return new ONDataFramerate(a->clone(), b->clone());
5528 }
5529 };
5530 //one input, no return
5531 class ONDataEFramerate : public BinaryOpcode
5532 {
5533 public:
5534 ONDataEFramerate(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
5535 std::string toString() const;
5536 Opcode* clone() const
5537 {
5538 return new ONDataEFramerate(a->clone(), b->clone());
5539 }
5540 };
5541 //one input, no return
5542 class ONDataTouchDamage : public BinaryOpcode
5543 {
5544 public:
5545 ONDataTouchDamage(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
5546 std::string toString() const;
5547 Opcode* clone() const
5548 {
5549 return new ONDataTouchDamage(a->clone(), b->clone());
5550 }
5551 };
5552 //one input, no return
5553 class ONDataWeaponDamage : public BinaryOpcode
5554 {
5555 public:
5556 ONDataWeaponDamage(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
5557 std::string toString() const;
5558 Opcode* clone() const
5559 {
5560 return new ONDataWeaponDamage(a->clone(), b->clone());
5561 }
5562 };
5563 //one input, no return
5564 class ONDataWeapon : public BinaryOpcode
5565 {
5566 public:
5567 ONDataWeapon(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
5568 std::string toString() const;
5569 Opcode* clone() const
5570 {
5571 return new ONDataWeapon(a->clone(), b->clone());
5572 }
5573 };
5574 //one input, no return
5575 class ONDataRandom : public BinaryOpcode
5576 {
5577 public:
5578 ONDataRandom(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
5579 std::string toString() const;
5580 Opcode* clone() const
5581 {
5582 return new ONDataRandom(a->clone(), b->clone());
5583 }
5584 };
5585 //one input, no return
5586 class ONDataHalt : public BinaryOpcode
5587 {
5588 public:
5589 ONDataHalt(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
5590 std::string toString() const;
5591 Opcode* clone() const
5592 {
5593 return new ONDataHalt(a->clone(), b->clone());
5594 }
5595 };
5596 //one input, no return
5597 class ONDataStep : public BinaryOpcode
5598 {
5599 public:
5600 ONDataStep(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
5601 std::string toString() const;
5602 Opcode* clone() const
5603 {
5604 return new ONDataStep(a->clone(), b->clone());
5605 }
5606 };
5607 //one input, no return
5608 class ONDataHoming : public BinaryOpcode
5609 {
5610 public:
5611 ONDataHoming(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
5612 std::string toString() const;
5613 Opcode* clone() const
5614 {
5615 return new ONDataHoming(a->clone(), b->clone());
5616 }
5617 };
5618 //one input, no return
5619 class ONDataHunger : public BinaryOpcode
5620 {
5621 public:
5622 ONDataHunger(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
5623 std::string toString() const;
5624 Opcode* clone() const
5625 {
5626 return new ONDataHunger(a->clone(), b->clone());
5627 }
5628 };
5629 //one input, no return
5630 class ONDataropset : public BinaryOpcode
5631 {
5632 public:
5633 ONDataropset(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
5634 std::string toString() const;
5635 Opcode* clone() const
5636 {
5637 return new ONDataropset(a->clone(), b->clone());
5638 }
5639 };
5640 //one input, no return
5641 class ONDataBGSound : public BinaryOpcode
5642 {
5643 public:
5644 ONDataBGSound(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
5645 std::string toString() const;
5646 Opcode* clone() const
5647 {
5648 return new ONDataBGSound(a->clone(), b->clone());
5649 }
5650 };
5651 //one input, no return
5652 class ONDataHitSound : public BinaryOpcode
5653 {
5654 public:
5655 ONDataHitSound(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
5656 std::string toString() const;
5657 Opcode* clone() const
5658 {
5659 return new ONDataHitSound(a->clone(), b->clone());
5660 }
5661 };
5662 //one input, no return
5663 class ONDataDeathSound : public BinaryOpcode
5664 {
5665 public:
5666 ONDataDeathSound(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
5667 std::string toString() const;
5668 Opcode* clone() const
5669 {
5670 return new ONDataDeathSound(a->clone(), b->clone());
5671 }
5672 };
5673 //one input, no return
5674 class ONDataXofs : public BinaryOpcode
5675 {
5676 public:
5677 ONDataXofs(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
5678 std::string toString() const;
5679 Opcode* clone() const
5680 {
5681 return new ONDataXofs(a->clone(), b->clone());
5682 }
5683 };
5684 //one input, no return
5685 class ONDataYofs : public BinaryOpcode
5686 {
5687 public:
5688 ONDataYofs(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
5689 std::string toString() const;
5690 Opcode* clone() const
5691 {
5692 return new ONDataYofs(a->clone(), b->clone());
5693 }
5694 };
5695 //one input, no return
5696 class ONDataZofs : public BinaryOpcode
5697 {
5698 public:
5699 ONDataZofs(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
5700 std::string toString() const;
5701 Opcode* clone() const
5702 {
5703 return new ONDataZofs(a->clone(), b->clone());
5704 }
5705 };
5706 //one input, no return
5707 class ONDataHitXOfs : public BinaryOpcode
5708 {
5709 public:
5710 ONDataHitXOfs(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
5711 std::string toString() const;
5712 Opcode* clone() const
5713 {
5714 return new ONDataHitXOfs(a->clone(), b->clone());
5715 }
5716 };
5717 //one input, no return
5718 class ONDataHYOfs : public BinaryOpcode
5719 {
5720 public:
5721 ONDataHYOfs(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
5722 std::string toString() const;
5723 Opcode* clone() const
5724 {
5725 return new ONDataHYOfs(a->clone(), b->clone());
5726 }
5727 };
5728 //one input, no return
5729 class ONDataHitWidth : public BinaryOpcode
5730 {
5731 public:
5732 ONDataHitWidth(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
5733 std::string toString() const;
5734 Opcode* clone() const
5735 {
5736 return new ONDataHitWidth(a->clone(), b->clone());
5737 }
5738 };
5739 //one input, no return
5740 class ONDataHitHeight : public BinaryOpcode
5741 {
5742 public:
5743 ONDataHitHeight(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
5744 std::string toString() const;
5745 Opcode* clone() const
5746 {
5747 return new ONDataHitHeight(a->clone(), b->clone());
5748 }
5749 };
5750 //one input, no return
5751 class ONDataHitZ : public BinaryOpcode
5752 {
5753 public:
5754 ONDataHitZ(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
5755 std::string toString() const;
5756 Opcode* clone() const
5757 {
5758 return new ONDataHitZ(a->clone(), b->clone());
5759 }
5760 };
5761 //one input, no return
5762 class ONDataTileWidth : public BinaryOpcode
5763 {
5764 public:
5765 ONDataTileWidth(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
5766 std::string toString() const;
5767 Opcode* clone() const
5768 {
5769 return new ONDataTileWidth(a->clone(), b->clone());
5770 }
5771 };
5772 //one input, no return
5773 class ONDataTileHeight : public BinaryOpcode
5774 {
5775 public:
5776 ONDataTileHeight(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
5777 std::string toString() const;
5778 Opcode* clone() const
5779 {
5780 return new ONDataTileHeight(a->clone(), b->clone());
5781 }
5782 };
5783 //one input, no return
5784 class ONDataWeapSprite : public BinaryOpcode
5785 {
5786 public:
5787 ONDataWeapSprite(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
5788 std::string toString() const;
5789 Opcode* clone() const
5790 {
5791 return new ONDataWeapSprite(a->clone(), b->clone());
5792 }
5793 };
5794
5795 //two inputs, two returns
5796
5797 class ONDataScriptDef : public UnaryOpcode
5798 {
5799 public:
5800 ONDataScriptDef(Argument *A) : UnaryOpcode(A) {}
5801 std::string toString() const;
5802 Opcode* clone() const
5803 {
5804 return new ONDataScriptDef(a->clone());
5805 }
5806 };
5807 //two inputs, two returns
5808
5809 class ONDataDefense : public UnaryOpcode
5810 {
5811 public:
5812 ONDataDefense(Argument *A) : UnaryOpcode(A) {}
5813 std::string toString() const;
5814 Opcode* clone() const
5815 {
5816 return new ONDataDefense(a->clone());
5817 }
5818 };
5819 //two inputs, two returns
5820
5821 class ONDataSizeFlag : public UnaryOpcode
5822 {
5823 public:
5824 ONDataSizeFlag(Argument *A) : UnaryOpcode(A) {}
5825 std::string toString() const;
5826 Opcode* clone() const
5827 {
5828 return new ONDataSizeFlag(a->clone());
5829 }
5830 };
5831 //two inputs, two returns
5832
5833 class ONDatattributes : public UnaryOpcode
5834 {
5835 public:
5836 ONDatattributes(Argument *A) : UnaryOpcode(A) {}
5837 std::string toString() const;
5838 Opcode* clone() const
5839 {
5840 return new ONDatattributes(a->clone());
5841 }
5842 };
5843
5844 class ONDataSetBaseTile : public BinaryOpcode
5845 {
5846 public:
5847 ONDataSetBaseTile(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
5848 std::string toString() const;
5849 Opcode* clone() const
5850 {
5851 return new ONDataSetBaseTile(a->clone(), b->clone());
5852 }
5853 };
5854 class ONDataSetEHeight : public BinaryOpcode
5855 {
5856 public:
5857 ONDataSetEHeight(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
5858 std::string toString() const;
5859 Opcode* clone() const
5860 {
5861 return new ONDataSetEHeight(a->clone(), b->clone());
5862 }
5863 };
5864
5865 class ONDataSetFlags : public BinaryOpcode
5866 {
5867 public:
5868 ONDataSetFlags(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
5869 std::string toString() const;
5870 Opcode* clone() const
5871 {
5872 return new ONDataSetFlags(a->clone(), b->clone());
5873 }
5874 };
5875 //one input, no return
5876 class ONDataSetFlags2 : public BinaryOpcode
5877 {
5878 public:
5879 ONDataSetFlags2(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
5880 std::string toString() const;
5881 Opcode* clone() const
5882 {
5883 return new ONDataSetFlags2(a->clone(), b->clone());
5884 }
5885 };
5886 //one input, no return
5887 class ONDataSetWidth : public BinaryOpcode
5888 {
5889 public:
5890 ONDataSetWidth(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
5891 std::string toString() const;
5892 Opcode* clone() const
5893 {
5894 return new ONDataSetWidth(a->clone(), b->clone());
5895 }
5896 };
5897 //one input, no return
5898 class ONDataSetHeight : public BinaryOpcode
5899 {
5900 public:
5901 ONDataSetHeight(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
5902 std::string toString() const;
5903 Opcode* clone() const
5904 {
5905 return new ONDataSetHeight(a->clone(), b->clone());
5906 }
5907 };
5908 //one input, no return
5909 class ONDataSetTile : public BinaryOpcode
5910 {
5911 public:
5912 ONDataSetTile(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
5913 std::string toString() const;
5914 Opcode* clone() const
5915 {
5916 return new ONDataSetTile(a->clone(), b->clone());
5917 }
5918 };
5919 //one input, no return
5920 class ONDataSetSWidth : public BinaryOpcode
5921 {
5922 public:
5923 ONDataSetSWidth(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
5924 std::string toString() const;
5925 Opcode* clone() const
5926 {
5927 return new ONDataSetSWidth(a->clone(), b->clone());
5928 }
5929 };
5930 //one input, no return
5931 class ONDataSetSHeight : public BinaryOpcode
5932 {
5933 public:
5934 ONDataSetSHeight(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
5935 std::string toString() const;
5936 Opcode* clone() const
5937 {
5938 return new ONDataSetSHeight(a->clone(), b->clone());
5939 }
5940 };
5941 //one input, no return
5942 class ONDataSetETile : public BinaryOpcode
5943 {
5944 public:
5945 ONDataSetETile(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
5946 std::string toString() const;
5947 Opcode* clone() const
5948 {
5949 return new ONDataSetETile(a->clone(), b->clone());
5950 }
5951 };
5952 //one input, no return
5953 class ONDataSetEWidth : public BinaryOpcode
5954 {
5955 public:
5956 ONDataSetEWidth(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
5957 std::string toString() const;
5958 Opcode* clone() const
5959 {
5960 return new ONDataSetEWidth(a->clone(), b->clone());
5961 }
5962 };
5963 //one input, no return
5964 class ONDataSetHP : public BinaryOpcode
5965 {
5966 public:
5967 ONDataSetHP(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
5968 std::string toString() const;
5969 Opcode* clone() const
5970 {
5971 return new ONDataSetHP(a->clone(), b->clone());
5972 }
5973 };
5974 //one input, no return
5975 class ONDataSetFamily : public BinaryOpcode
5976 {
5977 public:
5978 ONDataSetFamily(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
5979 std::string toString() const;
5980 Opcode* clone() const
5981 {
5982 return new ONDataSetFamily(a->clone(), b->clone());
5983 }
5984 };
5985 //one input, no return
5986 class ONDataSetCSet : public BinaryOpcode
5987 {
5988 public:
5989 ONDataSetCSet(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
5990 std::string toString() const;
5991 Opcode* clone() const
5992 {
5993 return new ONDataSetCSet(a->clone(), b->clone());
5994 }
5995 };
5996 //one input, no return
5997 class ONDataSetAnim : public BinaryOpcode
5998 {
5999 public:
6000 ONDataSetAnim(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6001 std::string toString() const;
6002 Opcode* clone() const
6003 {
6004 return new ONDataSetAnim(a->clone(), b->clone());
6005 }
6006 };
6007 //one input, no return
6008 class ONDataSetEAnim : public BinaryOpcode
6009 {
6010 public:
6011 ONDataSetEAnim(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6012 std::string toString() const;
6013 Opcode* clone() const
6014 {
6015 return new ONDataSetEAnim(a->clone(), b->clone());
6016 }
6017 };
6018 //one input, no return
6019 class ONDataSetFramerate : public BinaryOpcode
6020 {
6021 public:
6022 ONDataSetFramerate(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6023 std::string toString() const;
6024 Opcode* clone() const
6025 {
6026 return new ONDataSetFramerate(a->clone(), b->clone());
6027 }
6028 };
6029 //one input, no return
6030 class ONDataSetEFramerate : public BinaryOpcode
6031 {
6032 public:
6033 ONDataSetEFramerate(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6034 std::string toString() const;
6035 Opcode* clone() const
6036 {
6037 return new ONDataSetEFramerate(a->clone(), b->clone());
6038 }
6039 };
6040 //one input, no return
6041 class ONDataSetTouchDamage : public BinaryOpcode
6042 {
6043 public:
6044 ONDataSetTouchDamage(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6045 std::string toString() const;
6046 Opcode* clone() const
6047 {
6048 return new ONDataSetTouchDamage(a->clone(), b->clone());
6049 }
6050 };
6051 //one input, no return
6052 class ONDataSetWeaponDamage : public BinaryOpcode
6053 {
6054 public:
6055 ONDataSetWeaponDamage(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6056 std::string toString() const;
6057 Opcode* clone() const
6058 {
6059 return new ONDataSetWeaponDamage(a->clone(), b->clone());
6060 }
6061 };
6062 //one input, no return
6063 class ONDataSetWeapon : public BinaryOpcode
6064 {
6065 public:
6066 ONDataSetWeapon(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6067 std::string toString() const;
6068 Opcode* clone() const
6069 {
6070 return new ONDataSetWeapon(a->clone(), b->clone());
6071 }
6072 };
6073 //one input, no return
6074 class ONDataSetRandom : public BinaryOpcode
6075 {
6076 public:
6077 ONDataSetRandom(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6078 std::string toString() const;
6079 Opcode* clone() const
6080 {
6081 return new ONDataSetRandom(a->clone(), b->clone());
6082 }
6083 };
6084 //one input, no return
6085 class ONDataSetHalt : public BinaryOpcode
6086 {
6087 public:
6088 ONDataSetHalt(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6089 std::string toString() const;
6090 Opcode* clone() const
6091 {
6092 return new ONDataSetHalt(a->clone(), b->clone());
6093 }
6094 };
6095 //one input, no return
6096 class ONDataSetStep : public BinaryOpcode
6097 {
6098 public:
6099 ONDataSetStep(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6100 std::string toString() const;
6101 Opcode* clone() const
6102 {
6103 return new ONDataSetStep(a->clone(), b->clone());
6104 }
6105 };
6106 //one input, no return
6107 class ONDataSetHoming : public BinaryOpcode
6108 {
6109 public:
6110 ONDataSetHoming(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6111 std::string toString() const;
6112 Opcode* clone() const
6113 {
6114 return new ONDataSetHoming(a->clone(), b->clone());
6115 }
6116 };
6117 //one input, no return
6118 class ONDataSetHunger : public BinaryOpcode
6119 {
6120 public:
6121 ONDataSetHunger(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6122 std::string toString() const;
6123 Opcode* clone() const
6124 {
6125 return new ONDataSetHunger(a->clone(), b->clone());
6126 }
6127 };
6128 //one input, no return
6129 class ONDataSetropset : public BinaryOpcode
6130 {
6131 public:
6132 ONDataSetropset(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6133 std::string toString() const;
6134 Opcode* clone() const
6135 {
6136 return new ONDataSetropset(a->clone(), b->clone());
6137 }
6138 };
6139 //one input, no return
6140 class ONDataSetHitSound : public BinaryOpcode
6141 {
6142 public:
6143 ONDataSetHitSound(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6144 std::string toString() const;
6145 Opcode* clone() const
6146 {
6147 return new ONDataSetHitSound(a->clone(), b->clone());
6148 }
6149 };
6150
6151 //one input, no return
6152 class ONDataSetBGSound : public BinaryOpcode
6153 {
6154 public:
6155 ONDataSetBGSound(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6156 std::string toString() const;
6157 Opcode* clone() const
6158 {
6159 return new ONDataSetBGSound(a->clone(), b->clone());
6160 }
6161 };
6162 //one input, no return
6163 class ONDataSetDeathSound : public BinaryOpcode
6164 {
6165 public:
6166 ONDataSetDeathSound(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6167 std::string toString() const;
6168 Opcode* clone() const
6169 {
6170 return new ONDataSetDeathSound(a->clone(), b->clone());
6171 }
6172 };
6173 //one input, no return
6174 class ONDataSetXofs : public BinaryOpcode
6175 {
6176 public:
6177 ONDataSetXofs(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6178 std::string toString() const;
6179 Opcode* clone() const
6180 {
6181 return new ONDataSetXofs(a->clone(), b->clone());
6182 }
6183 };
6184 //one input, no return
6185 class ONDataSetYofs : public BinaryOpcode
6186 {
6187 public:
6188 ONDataSetYofs(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6189 std::string toString() const;
6190 Opcode* clone() const
6191 {
6192 return new ONDataSetYofs(a->clone(), b->clone());
6193 }
6194 };
6195 //one input, no return
6196 class ONDataSetZofs : public BinaryOpcode
6197 {
6198 public:
6199 ONDataSetZofs(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6200 std::string toString() const;
6201 Opcode* clone() const
6202 {
6203 return new ONDataSetZofs(a->clone(), b->clone());
6204 }
6205 };
6206 //one input, no return
6207 class ONDataSetHitXOfs : public BinaryOpcode
6208 {
6209 public:
6210 ONDataSetHitXOfs(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6211 std::string toString() const;
6212 Opcode* clone() const
6213 {
6214 return new ONDataSetHitXOfs(a->clone(), b->clone());
6215 }
6216 };
6217 //one input, no return
6218 class ONDataSetHYOfs : public BinaryOpcode
6219 {
6220 public:
6221 ONDataSetHYOfs(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6222 std::string toString() const;
6223 Opcode* clone() const
6224 {
6225 return new ONDataSetHYOfs(a->clone(), b->clone());
6226 }
6227 };
6228 //one input, no return
6229 class ONDataSetHitWidth : public BinaryOpcode
6230 {
6231 public:
6232 ONDataSetHitWidth(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6233 std::string toString() const;
6234 Opcode* clone() const
6235 {
6236 return new ONDataSetHitWidth(a->clone(), b->clone());
6237 }
6238 };
6239 //one input, no return
6240 class ONDataSetHitHeight : public BinaryOpcode
6241 {
6242 public:
6243 ONDataSetHitHeight(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6244 std::string toString() const;
6245 Opcode* clone() const
6246 {
6247 return new ONDataSetHitHeight(a->clone(), b->clone());
6248 }
6249 };
6250 //one input, no return
6251 class ONDataSetHitZ : public BinaryOpcode
6252 {
6253 public:
6254 ONDataSetHitZ(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6255 std::string toString() const;
6256 Opcode* clone() const
6257 {
6258 return new ONDataSetHitZ(a->clone(), b->clone());
6259 }
6260 };
6261 //one input, no return
6262 class ONDataSetTileWidth : public BinaryOpcode
6263 {
6264 public:
6265 ONDataSetTileWidth(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6266 std::string toString() const;
6267 Opcode* clone() const
6268 {
6269 return new ONDataSetTileWidth(a->clone(), b->clone());
6270 }
6271 };
6272 //one input, no return
6273 class ONDataSetTileHeight : public BinaryOpcode
6274 {
6275 public:
6276 ONDataSetTileHeight(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6277 std::string toString() const;
6278 Opcode* clone() const
6279 {
6280 return new ONDataSetTileHeight(a->clone(), b->clone());
6281 }
6282 };
6283 //one input, no return
6284 class ONDataSetWeapSprite : public BinaryOpcode
6285 {
6286 public:
6287 ONDataSetWeapSprite(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6288 std::string toString() const;
6289 Opcode* clone() const
6290 {
6291 return new ONDataSetWeapSprite(a->clone(), b->clone());
6292 }
6293 };
6294
6295 //ComboData
6296
6297 class OCDataBlockEnemy : public BinaryOpcode
6298 {
6299 public:
6300 OCDataBlockEnemy(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6301 std::string toString() const;
6302 Opcode* clone() const
6303 {
6304 return new OCDataBlockEnemy(a->clone(), b->clone());
6305 }
6306 };
6307 class OCDataBlockHole : public BinaryOpcode
6308 {
6309 public:
6310 OCDataBlockHole(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6311 std::string toString() const;
6312 Opcode* clone() const
6313 {
6314 return new OCDataBlockHole(a->clone(), b->clone());
6315 }
6316 };
6317 class OCDataBlockTrig : public BinaryOpcode
6318 {
6319 public:
6320 OCDataBlockTrig(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6321 std::string toString() const;
6322 Opcode* clone() const
6323 {
6324 return new OCDataBlockTrig(a->clone(), b->clone());
6325 }
6326 };
6327 class OCDataConveyX : public BinaryOpcode
6328 {
6329 public:
6330 OCDataConveyX(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6331 std::string toString() const;
6332 Opcode* clone() const
6333 {
6334 return new OCDataConveyX(a->clone(), b->clone());
6335 }
6336 };
6337 class OCDataConveyY : public BinaryOpcode
6338 {
6339 public:
6340 OCDataConveyY(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6341 std::string toString() const;
6342 Opcode* clone() const
6343 {
6344 return new OCDataConveyY(a->clone(), b->clone());
6345 }
6346 };
6347 class OCDataCreateNPC : public BinaryOpcode
6348 {
6349 public:
6350 OCDataCreateNPC(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6351 std::string toString() const;
6352 Opcode* clone() const
6353 {
6354 return new OCDataCreateNPC(a->clone(), b->clone());
6355 }
6356 };
6357 class OCDataCreateEnemW : public BinaryOpcode
6358 {
6359 public:
6360 OCDataCreateEnemW(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6361 std::string toString() const;
6362 Opcode* clone() const
6363 {
6364 return new OCDataCreateEnemW(a->clone(), b->clone());
6365 }
6366 };
6367 class OCDataCreateEnemC : public BinaryOpcode
6368 {
6369 public:
6370 OCDataCreateEnemC(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6371 std::string toString() const;
6372 Opcode* clone() const
6373 {
6374 return new OCDataCreateEnemC(a->clone(), b->clone());
6375 }
6376 };
6377 class OCDataDirch : public BinaryOpcode
6378 {
6379 public:
6380 OCDataDirch(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6381 std::string toString() const;
6382 Opcode* clone() const
6383 {
6384 return new OCDataDirch(a->clone(), b->clone());
6385 }
6386 };
6387 class OCDataDistTiles : public BinaryOpcode
6388 {
6389 public:
6390 OCDataDistTiles(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6391 std::string toString() const;
6392 Opcode* clone() const
6393 {
6394 return new OCDataDistTiles(a->clone(), b->clone());
6395 }
6396 };
6397 class OCDataDiveItem : public BinaryOpcode
6398 {
6399 public:
6400 OCDataDiveItem(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6401 std::string toString() const;
6402 Opcode* clone() const
6403 {
6404 return new OCDataDiveItem(a->clone(), b->clone());
6405 }
6406 };
6407 class OCDataAttrib : public BinaryOpcode
6408 {
6409 public:
6410 OCDataAttrib(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6411 std::string toString() const;
6412 Opcode* clone() const
6413 {
6414 return new OCDataAttrib(a->clone(), b->clone());
6415 }
6416 };
6417 class OCDataDecoTile : public BinaryOpcode
6418 {
6419 public:
6420 OCDataDecoTile(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6421 std::string toString() const;
6422 Opcode* clone() const
6423 {
6424 return new OCDataDecoTile(a->clone(), b->clone());
6425 }
6426 };
6427 class OCDataDock : public BinaryOpcode
6428 {
6429 public:
6430 OCDataDock(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6431 std::string toString() const;
6432 Opcode* clone() const
6433 {
6434 return new OCDataDock(a->clone(), b->clone());
6435 }
6436 };
6437 class OCDataFairy : public BinaryOpcode
6438 {
6439 public:
6440 OCDataFairy(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6441 std::string toString() const;
6442 Opcode* clone() const
6443 {
6444 return new OCDataFairy(a->clone(), b->clone());
6445 }
6446 };
6447 class OCDataDecoType : public BinaryOpcode
6448 {
6449 public:
6450 OCDataDecoType(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6451 std::string toString() const;
6452 Opcode* clone() const
6453 {
6454 return new OCDataDecoType(a->clone(), b->clone());
6455 }
6456 };
6457 class OCDataHookshotGrab : public BinaryOpcode
6458 {
6459 public:
6460 OCDataHookshotGrab(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6461 std::string toString() const;
6462 Opcode* clone() const
6463 {
6464 return new OCDataHookshotGrab(a->clone(), b->clone());
6465 }
6466 };
6467 class OCDataLockBlock : public BinaryOpcode
6468 {
6469 public:
6470 OCDataLockBlock(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6471 std::string toString() const;
6472 Opcode* clone() const
6473 {
6474 return new OCDataLockBlock(a->clone(), b->clone());
6475 }
6476 };
6477 class OCDataLockBlockChange : public BinaryOpcode
6478 {
6479 public:
6480 OCDataLockBlockChange(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6481 std::string toString() const;
6482 Opcode* clone() const
6483 {
6484 return new OCDataLockBlockChange(a->clone(), b->clone());
6485 }
6486 };
6487 class OCDataMagicMirror : public BinaryOpcode
6488 {
6489 public:
6490 OCDataMagicMirror(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6491 std::string toString() const;
6492 Opcode* clone() const
6493 {
6494 return new OCDataMagicMirror(a->clone(), b->clone());
6495 }
6496 };
6497 class OCDataModHP : public BinaryOpcode
6498 {
6499 public:
6500 OCDataModHP(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6501 std::string toString() const;
6502 Opcode* clone() const
6503 {
6504 return new OCDataModHP(a->clone(), b->clone());
6505 }
6506 };
6507 class OCDataModHPDelay : public BinaryOpcode
6508 {
6509 public:
6510 OCDataModHPDelay(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6511 std::string toString() const;
6512 Opcode* clone() const
6513 {
6514 return new OCDataModHPDelay(a->clone(), b->clone());
6515 }
6516 };
6517 class OCDataModHpType : public BinaryOpcode
6518 {
6519 public:
6520 OCDataModHpType(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6521 std::string toString() const;
6522 Opcode* clone() const
6523 {
6524 return new OCDataModHpType(a->clone(), b->clone());
6525 }
6526 };
6527 class OCDataModMP : public BinaryOpcode
6528 {
6529 public:
6530 OCDataModMP(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6531 std::string toString() const;
6532 Opcode* clone() const
6533 {
6534 return new OCDataModMP(a->clone(), b->clone());
6535 }
6536 };
6537 class OCDataMpdMPDelay : public BinaryOpcode
6538 {
6539 public:
6540 OCDataMpdMPDelay(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6541 std::string toString() const;
6542 Opcode* clone() const
6543 {
6544 return new OCDataMpdMPDelay(a->clone(), b->clone());
6545 }
6546 };
6547 class OCDataModMPType : public BinaryOpcode
6548 {
6549 public:
6550 OCDataModMPType(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6551 std::string toString() const;
6552 Opcode* clone() const
6553 {
6554 return new OCDataModMPType(a->clone(), b->clone());
6555 }
6556 };
6557 class OCDataNoPush : public BinaryOpcode
6558 {
6559 public:
6560 OCDataNoPush(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6561 std::string toString() const;
6562 Opcode* clone() const
6563 {
6564 return new OCDataNoPush(a->clone(), b->clone());
6565 }
6566 };
6567 class OCDataOverhead : public BinaryOpcode
6568 {
6569 public:
6570 OCDataOverhead(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6571 std::string toString() const;
6572 Opcode* clone() const
6573 {
6574 return new OCDataOverhead(a->clone(), b->clone());
6575 }
6576 };
6577 class OCDataEnemyLoc : public BinaryOpcode
6578 {
6579 public:
6580 OCDataEnemyLoc(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6581 std::string toString() const;
6582 Opcode* clone() const
6583 {
6584 return new OCDataEnemyLoc(a->clone(), b->clone());
6585 }
6586 };
6587 class OCDataPushDir : public BinaryOpcode
6588 {
6589 public:
6590 OCDataPushDir(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6591 std::string toString() const;
6592 Opcode* clone() const
6593 {
6594 return new OCDataPushDir(a->clone(), b->clone());
6595 }
6596 };
6597 class OCDataPushWeight : public BinaryOpcode
6598 {
6599 public:
6600 OCDataPushWeight(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6601 std::string toString() const;
6602 Opcode* clone() const
6603 {
6604 return new OCDataPushWeight(a->clone(), b->clone());
6605 }
6606 };
6607 class OCDataPushWait : public BinaryOpcode
6608 {
6609 public:
6610 OCDataPushWait(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6611 std::string toString() const;
6612 Opcode* clone() const
6613 {
6614 return new OCDataPushWait(a->clone(), b->clone());
6615 }
6616 };
6617 class OCDataPushed : public BinaryOpcode
6618 {
6619 public:
6620 OCDataPushed(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6621 std::string toString() const;
6622 Opcode* clone() const
6623 {
6624 return new OCDataPushed(a->clone(), b->clone());
6625 }
6626 };
6627 class OCDataRaft : public BinaryOpcode
6628 {
6629 public:
6630 OCDataRaft(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6631 std::string toString() const;
6632 Opcode* clone() const
6633 {
6634 return new OCDataRaft(a->clone(), b->clone());
6635 }
6636 };
6637 class OCDataResetRoom : public BinaryOpcode
6638 {
6639 public:
6640 OCDataResetRoom(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6641 std::string toString() const;
6642 Opcode* clone() const
6643 {
6644 return new OCDataResetRoom(a->clone(), b->clone());
6645 }
6646 };
6647 class OCDataSavePoint : public BinaryOpcode
6648 {
6649 public:
6650 OCDataSavePoint(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6651 std::string toString() const;
6652 Opcode* clone() const
6653 {
6654 return new OCDataSavePoint(a->clone(), b->clone());
6655 }
6656 };
6657 class OCDataFreeezeScreen : public BinaryOpcode
6658 {
6659 public:
6660 OCDataFreeezeScreen(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6661 std::string toString() const;
6662 Opcode* clone() const
6663 {
6664 return new OCDataFreeezeScreen(a->clone(), b->clone());
6665 }
6666 };
6667 class OCDataSecretCombo : public BinaryOpcode
6668 {
6669 public:
6670 OCDataSecretCombo(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6671 std::string toString() const;
6672 Opcode* clone() const
6673 {
6674 return new OCDataSecretCombo(a->clone(), b->clone());
6675 }
6676 };
6677 class OCDataSingular : public BinaryOpcode
6678 {
6679 public:
6680 OCDataSingular(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6681 std::string toString() const;
6682 Opcode* clone() const
6683 {
6684 return new OCDataSingular(a->clone(), b->clone());
6685 }
6686 };
6687 class OCDataSlowMove : public BinaryOpcode
6688 {
6689 public:
6690 OCDataSlowMove(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6691 std::string toString() const;
6692 Opcode* clone() const
6693 {
6694 return new OCDataSlowMove(a->clone(), b->clone());
6695 }
6696 };
6697 class OCDataStatue : public BinaryOpcode
6698 {
6699 public:
6700 OCDataStatue(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6701 std::string toString() const;
6702 Opcode* clone() const
6703 {
6704 return new OCDataStatue(a->clone(), b->clone());
6705 }
6706 };
6707 class OCDataStepType : public BinaryOpcode
6708 {
6709 public:
6710 OCDataStepType(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6711 std::string toString() const;
6712 Opcode* clone() const
6713 {
6714 return new OCDataStepType(a->clone(), b->clone());
6715 }
6716 };
6717 class OCDataSteoChange : public BinaryOpcode
6718 {
6719 public:
6720 OCDataSteoChange(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6721 std::string toString() const;
6722 Opcode* clone() const
6723 {
6724 return new OCDataSteoChange(a->clone(), b->clone());
6725 }
6726 };
6727 class OCDataStrikeRem : public BinaryOpcode
6728 {
6729 public:
6730 OCDataStrikeRem(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6731 std::string toString() const;
6732 Opcode* clone() const
6733 {
6734 return new OCDataStrikeRem(a->clone(), b->clone());
6735 }
6736 };
6737 class OCDataStrikeRemType : public BinaryOpcode
6738 {
6739 public:
6740 OCDataStrikeRemType(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6741 std::string toString() const;
6742 Opcode* clone() const
6743 {
6744 return new OCDataStrikeRemType(a->clone(), b->clone());
6745 }
6746 };
6747 class OCDataStrikeChange : public BinaryOpcode
6748 {
6749 public:
6750 OCDataStrikeChange(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6751 std::string toString() const;
6752 Opcode* clone() const
6753 {
6754 return new OCDataStrikeChange(a->clone(), b->clone());
6755 }
6756 };
6757 class OCDataStrikeChangeItem : public BinaryOpcode
6758 {
6759 public:
6760 OCDataStrikeChangeItem(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6761 std::string toString() const;
6762 Opcode* clone() const
6763 {
6764 return new OCDataStrikeChangeItem(a->clone(), b->clone());
6765 }
6766 };
6767 class OCDataTouchItem : public BinaryOpcode
6768 {
6769 public:
6770 OCDataTouchItem(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6771 std::string toString() const;
6772 Opcode* clone() const
6773 {
6774 return new OCDataTouchItem(a->clone(), b->clone());
6775 }
6776 };
6777 class OCDataTouchStairs : public BinaryOpcode
6778 {
6779 public:
6780 OCDataTouchStairs(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6781 std::string toString() const;
6782 Opcode* clone() const
6783 {
6784 return new OCDataTouchStairs(a->clone(), b->clone());
6785 }
6786 };
6787 class OCDataTriggerType : public BinaryOpcode
6788 {
6789 public:
6790 OCDataTriggerType(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6791 std::string toString() const;
6792 Opcode* clone() const
6793 {
6794 return new OCDataTriggerType(a->clone(), b->clone());
6795 }
6796 };
6797 class OCDataTriggerSens : public BinaryOpcode
6798 {
6799 public:
6800 OCDataTriggerSens(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6801 std::string toString() const;
6802 Opcode* clone() const
6803 {
6804 return new OCDataTriggerSens(a->clone(), b->clone());
6805 }
6806 };
6807 class OCDataWarpType : public BinaryOpcode
6808 {
6809 public:
6810 OCDataWarpType(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6811 std::string toString() const;
6812 Opcode* clone() const
6813 {
6814 return new OCDataWarpType(a->clone(), b->clone());
6815 }
6816 };
6817 class OCDataWarpSens : public BinaryOpcode
6818 {
6819 public:
6820 OCDataWarpSens(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6821 std::string toString() const;
6822 Opcode* clone() const
6823 {
6824 return new OCDataWarpSens(a->clone(), b->clone());
6825 }
6826 };
6827 class OCDataWarpDirect : public BinaryOpcode
6828 {
6829 public:
6830 OCDataWarpDirect(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6831 std::string toString() const;
6832 Opcode* clone() const
6833 {
6834 return new OCDataWarpDirect(a->clone(), b->clone());
6835 }
6836 };
6837 class OCDataWarpLoc : public BinaryOpcode
6838 {
6839 public:
6840 OCDataWarpLoc(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6841 std::string toString() const;
6842 Opcode* clone() const
6843 {
6844 return new OCDataWarpLoc(a->clone(), b->clone());
6845 }
6846 };
6847 class OCDataWater : public BinaryOpcode
6848 {
6849 public:
6850 OCDataWater(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6851 std::string toString() const;
6852 Opcode* clone() const
6853 {
6854 return new OCDataWater(a->clone(), b->clone());
6855 }
6856 };
6857
6858 class OCDataWinGame : public BinaryOpcode
6859 {
6860 public:
6861 OCDataWinGame(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6862 std::string toString() const;
6863 Opcode* clone() const
6864 {
6865 return new OCDataWinGame(a->clone(), b->clone());
6866 }
6867 };
6868
6869 class OCDataWhistle : public BinaryOpcode
6870 {
6871 public:
6872 OCDataWhistle(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6873 std::string toString() const;
6874 Opcode* clone() const
6875 {
6876 return new OCDataWhistle(a->clone(), b->clone());
6877 }
6878 };
6879 class OCDataWeapBlockLevel : public BinaryOpcode
6880 {
6881 public:
6882 OCDataWeapBlockLevel(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6883 std::string toString() const;
6884 Opcode* clone() const
6885 {
6886 return new OCDataWeapBlockLevel(a->clone(), b->clone());
6887 }
6888 };
6889 class OCDataTile : public BinaryOpcode
6890 {
6891 public:
6892 OCDataTile(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6893 std::string toString() const;
6894 Opcode* clone() const
6895 {
6896 return new OCDataTile(a->clone(), b->clone());
6897 }
6898 };
6899 class OCDataFlip : public BinaryOpcode
6900 {
6901 public:
6902 OCDataFlip(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6903 std::string toString() const;
6904 Opcode* clone() const
6905 {
6906 return new OCDataFlip(a->clone(), b->clone());
6907 }
6908 };
6909 class OCDataWalkability : public BinaryOpcode
6910 {
6911 public:
6912 OCDataWalkability(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6913 std::string toString() const;
6914 Opcode* clone() const
6915 {
6916 return new OCDataWalkability(a->clone(), b->clone());
6917 }
6918 };
6919 class OCDataType : public BinaryOpcode
6920 {
6921 public:
6922 OCDataType(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6923 std::string toString() const;
6924 Opcode* clone() const
6925 {
6926 return new OCDataType(a->clone(), b->clone());
6927 }
6928 };
6929 class OCDataCSets : public BinaryOpcode
6930 {
6931 public:
6932 OCDataCSets(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6933 std::string toString() const;
6934 Opcode* clone() const
6935 {
6936 return new OCDataCSets(a->clone(), b->clone());
6937 }
6938 };
6939 class OCDataFoo : public BinaryOpcode
6940 {
6941 public:
6942 OCDataFoo(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6943 std::string toString() const;
6944 Opcode* clone() const
6945 {
6946 return new OCDataFoo(a->clone(), b->clone());
6947 }
6948 };
6949 class OCDataFrames : public BinaryOpcode
6950 {
6951 public:
6952 OCDataFrames(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6953 std::string toString() const;
6954 Opcode* clone() const
6955 {
6956 return new OCDataFrames(a->clone(), b->clone());
6957 }
6958 };
6959 class OCDataSpeed : public BinaryOpcode
6960 {
6961 public:
6962 OCDataSpeed(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6963 std::string toString() const;
6964 Opcode* clone() const
6965 {
6966 return new OCDataSpeed(a->clone(), b->clone());
6967 }
6968 };
6969 class OCDataNext : public BinaryOpcode
6970 {
6971 public:
6972 OCDataNext(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6973 std::string toString() const;
6974 Opcode* clone() const
6975 {
6976 return new OCDataNext(a->clone(), b->clone());
6977 }
6978 };
6979 class OCDataNextCSet : public BinaryOpcode
6980 {
6981 public:
6982 OCDataNextCSet(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6983 std::string toString() const;
6984 Opcode* clone() const
6985 {
6986 return new OCDataNextCSet(a->clone(), b->clone());
6987 }
6988 };
6989 class OCDataFlag : public BinaryOpcode
6990 {
6991 public:
6992 OCDataFlag(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
6993 std::string toString() const;
6994 Opcode* clone() const
6995 {
6996 return new OCDataFlag(a->clone(), b->clone());
6997 }
6998 };
6999 class OCDataSkipAnim : public BinaryOpcode
7000 {
7001 public:
7002 OCDataSkipAnim(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
7003 std::string toString() const;
7004 Opcode* clone() const
7005 {
7006 return new OCDataSkipAnim(a->clone(), b->clone());
7007 }
7008 };
7009 class OCDataTimer : public BinaryOpcode
7010 {
7011 public:
7012 OCDataTimer(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
7013 std::string toString() const;
7014 Opcode* clone() const
7015 {
7016 return new OCDataTimer(a->clone(), b->clone());
7017 }
7018 };
7019 class OCDataAnimY : public BinaryOpcode
7020 {
7021 public:
7022 OCDataAnimY(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
7023 std::string toString() const;
7024 Opcode* clone() const
7025 {
7026 return new OCDataAnimY(a->clone(), b->clone());
7027 }
7028 };
7029 class OCDataAnimFlags : public BinaryOpcode
7030 {
7031 public:
7032 OCDataAnimFlags(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
7033 std::string toString() const;
7034 Opcode* clone() const
7035 {
7036 return new OCDataAnimFlags(a->clone(), b->clone());
7037 }
7038 };
7039 class OCDataBlockWeapon : public UnaryOpcode
7040 {
7041 public:
7042 OCDataBlockWeapon(Argument *A) : UnaryOpcode(A) {}
7043 std::string toString() const;
7044 Opcode* clone() const
7045 {
7046 return new OCDataBlockWeapon(a->clone());
7047 }
7048 };
7049 class OCDataExpansion : public UnaryOpcode
7050 {
7051 public:
7052 OCDataExpansion(Argument *A) : UnaryOpcode(A) {}
7053 std::string toString() const;
7054 Opcode* clone() const
7055 {
7056 return new OCDataExpansion(a->clone());
7057 }
7058 };
7059 class OCDataStrikeWeapon : public UnaryOpcode
7060 {
7061 public:
7062 OCDataStrikeWeapon(Argument *A) : UnaryOpcode(A) {}
7063 std::string toString() const;
7064 Opcode* clone() const
7065 {
7066 return new OCDataStrikeWeapon(a->clone());
7067 }
7068 };
7069
7070
7071 class OCSetDataBlockEnemy : public BinaryOpcode
7072 {
7073 public:
7074 OCSetDataBlockEnemy(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
7075 std::string toString() const;
7076 Opcode* clone() const
7077 {
7078 return new OCSetDataBlockEnemy(a->clone(), b->clone());
7079 }
7080 };
7081 class OCSetDataBlockHole : public BinaryOpcode
7082 {
7083 public:
7084 OCSetDataBlockHole(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
7085 std::string toString() const;
7086 Opcode* clone() const
7087 {
7088 return new OCSetDataBlockHole(a->clone(), b->clone());
7089 }
7090 };
7091 class OCSetDataBlockTrig : public BinaryOpcode
7092 {
7093 public:
7094 OCSetDataBlockTrig(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
7095 std::string toString() const;
7096 Opcode* clone() const
7097 {
7098 return new OCSetDataBlockTrig(a->clone(), b->clone());
7099 }
7100 };
7101 class OCSetDataConveyX : public BinaryOpcode
7102 {
7103 public:
7104 OCSetDataConveyX(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
7105 std::string toString() const;
7106 Opcode* clone() const
7107 {
7108 return new OCSetDataConveyX(a->clone(), b->clone());
7109 }
7110 };
7111 class OCSetDataConveyY : public BinaryOpcode
7112 {
7113 public:
7114 OCSetDataConveyY(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
7115 std::string toString() const;
7116 Opcode* clone() const
7117 {
7118 return new OCSetDataConveyY(a->clone(), b->clone());
7119 }
7120 };
7121 class OCSetDataCreateNPC : public BinaryOpcode
7122 {
7123 public:
7124 OCSetDataCreateNPC(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
7125 std::string toString() const;
7126 Opcode* clone() const
7127 {
7128 return new OCSetDataCreateNPC(a->clone(), b->clone());
7129 }
7130 };
7131 class OCSetDataCreateEnemW : public BinaryOpcode
7132 {
7133 public:
7134 OCSetDataCreateEnemW(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
7135 std::string toString() const;
7136 Opcode* clone() const
7137 {
7138 return new OCSetDataCreateEnemW(a->clone(), b->clone());
7139 }
7140 };
7141 class OCSetDataCreateEnemC : public BinaryOpcode
7142 {
7143 public:
7144 OCSetDataCreateEnemC(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
7145 std::string toString() const;
7146 Opcode* clone() const
7147 {
7148 return new OCSetDataCreateEnemC(a->clone(), b->clone());
7149 }
7150 };
7151 class OCSetDataDirch : public BinaryOpcode
7152 {
7153 public:
7154 OCSetDataDirch(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
7155 std::string toString() const;
7156 Opcode* clone() const
7157 {
7158 return new OCSetDataDirch(a->clone(), b->clone());
7159 }
7160 };
7161 class OCSetDataDistTiles : public BinaryOpcode
7162 {
7163 public:
7164 OCSetDataDistTiles(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
7165 std::string toString() const;
7166 Opcode* clone() const
7167 {
7168 return new OCSetDataDistTiles(a->clone(), b->clone());
7169 }
7170 };
7171 class OCSetDataDiveItem : public BinaryOpcode
7172 {
7173 public:
7174 OCSetDataDiveItem(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
7175 std::string toString() const;
7176 Opcode* clone() const
7177 {
7178 return new OCSetDataDiveItem(a->clone(), b->clone());
7179 }
7180 };
7181 class OCSetDataAttrib : public BinaryOpcode
7182 {
7183 public:
7184 OCSetDataAttrib(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
7185 std::string toString() const;
7186 Opcode* clone() const
7187 {
7188 return new OCSetDataAttrib(a->clone(), b->clone());
7189 }
7190 };
7191 class OCSetDataDecoTile : public BinaryOpcode
7192 {
7193 public:
7194 OCSetDataDecoTile(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
7195 std::string toString() const;
7196 Opcode* clone() const
7197 {
7198 return new OCSetDataDecoTile(a->clone(), b->clone());
7199 }
7200 };
7201 class OCSetDataDock : public BinaryOpcode
7202 {
7203 public:
7204 OCSetDataDock(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
7205 std::string toString() const;
7206 Opcode* clone() const
7207 {
7208 return new OCSetDataDock(a->clone(), b->clone());
7209 }
7210 };
7211 class OCSetDataFairy : public BinaryOpcode
7212 {
7213 public:
7214 OCSetDataFairy(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
7215 std::string toString() const;
7216 Opcode* clone() const
7217 {
7218 return new OCSetDataFairy(a->clone(), b->clone());
7219 }
7220 };
7221 class OCSetDataDecoType : public BinaryOpcode
7222 {
7223 public:
7224 OCSetDataDecoType(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
7225 std::string toString() const;
7226 Opcode* clone() const
7227 {
7228 return new OCSetDataDecoType(a->clone(), b->clone());
7229 }
7230 };
7231 class OCSetDataHookshotGrab : public BinaryOpcode
7232 {
7233 public:
7234 OCSetDataHookshotGrab(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
7235 std::string toString() const;
7236 Opcode* clone() const
7237 {
7238 return new OCSetDataHookshotGrab(a->clone(), b->clone());
7239 }
7240 };
7241 class OCSetDataLockBlock : public BinaryOpcode
7242 {
7243 public:
7244 OCSetDataLockBlock(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
7245 std::string toString() const;
7246 Opcode* clone() const
7247 {
7248 return new OCSetDataLockBlock(a->clone(), b->clone());
7249 }
7250 };
7251 class OCSetDataLockBlockChange : public BinaryOpcode
7252 {
7253 public:
7254 OCSetDataLockBlockChange(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
7255 std::string toString() const;
7256 Opcode* clone() const
7257 {
7258 return new OCSetDataLockBlockChange(a->clone(), b->clone());
7259 }
7260 };
7261 class OCSetDataMagicMirror : public BinaryOpcode
7262 {
7263 public:
7264 OCSetDataMagicMirror(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
7265 std::string toString() const;
7266 Opcode* clone() const
7267 {
7268 return new OCSetDataMagicMirror(a->clone(), b->clone());
7269 }
7270 };
7271 class OCSetDataModHP : public BinaryOpcode
7272 {
7273 public:
7274 OCSetDataModHP(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
7275 std::string toString() const;
7276 Opcode* clone() const
7277 {
7278 return new OCSetDataModHP(a->clone(), b->clone());
7279 }
7280 };
7281 class OCSetDataModHPDelay : public BinaryOpcode
7282 {
7283 public:
7284 OCSetDataModHPDelay(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
7285 std::string toString() const;
7286 Opcode* clone() const
7287 {
7288 return new OCSetDataModHPDelay(a->clone(), b->clone());
7289 }
7290 };
7291 class OCSetDataModHpType : public BinaryOpcode
7292 {
7293 public:
7294 OCSetDataModHpType(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
7295 std::string toString() const;
7296 Opcode* clone() const
7297 {
7298 return new OCSetDataModHpType(a->clone(), b->clone());
7299 }
7300 };
7301 class OCSetDataModMP : public BinaryOpcode
7302 {
7303 public:
7304 OCSetDataModMP(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
7305 std::string toString() const;
7306 Opcode* clone() const
7307 {
7308 return new OCSetDataModMP(a->clone(), b->clone());
7309 }
7310 };
7311 class OCSetDataMpdMPDelay : public BinaryOpcode
7312 {
7313 public:
7314 OCSetDataMpdMPDelay(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
7315 std::string toString() const;
7316 Opcode* clone() const
7317 {
7318 return new OCSetDataMpdMPDelay(a->clone(), b->clone());
7319 }
7320 };
7321 class OCSetDataModMPType : public BinaryOpcode
7322 {
7323 public:
7324 OCSetDataModMPType(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
7325 std::string toString() const;
7326 Opcode* clone() const
7327 {
7328 return new OCSetDataModMPType(a->clone(), b->clone());
7329 }
7330 };
7331 class OCSetDataNoPush : public BinaryOpcode
7332 {
7333 public:
7334 OCSetDataNoPush(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
7335 std::string toString() const;
7336 Opcode* clone() const
7337 {
7338 return new OCSetDataNoPush(a->clone(), b->clone());
7339 }
7340 };
7341 class OCSetDataOverhead : public BinaryOpcode
7342 {
7343 public:
7344 OCSetDataOverhead(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
7345 std::string toString() const;
7346 Opcode* clone() const
7347 {
7348 return new OCSetDataOverhead(a->clone(), b->clone());
7349 }
7350 };
7351 class OCSetDataEnemyLoc : public BinaryOpcode
7352 {
7353 public:
7354 OCSetDataEnemyLoc(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
7355 std::string toString() const;
7356 Opcode* clone() const
7357 {
7358 return new OCSetDataEnemyLoc(a->clone(), b->clone());
7359 }
7360 };
7361 class OCSetDataPushDir : public BinaryOpcode
7362 {
7363 public:
7364 OCSetDataPushDir(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
7365 std::string toString() const;
7366 Opcode* clone() const
7367 {
7368 return new OCSetDataPushDir(a->clone(), b->clone());
7369 }
7370 };
7371 class OCSetDataPushWeight : public BinaryOpcode
7372 {
7373 public:
7374 OCSetDataPushWeight(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
7375 std::string toString() const;
7376 Opcode* clone() const
7377 {
7378 return new OCSetDataPushWeight(a->clone(), b->clone());
7379 }
7380 };
7381 class OCSetDataPushWait : public BinaryOpcode
7382 {
7383 public:
7384 OCSetDataPushWait(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
7385 std::string toString() const;
7386 Opcode* clone() const
7387 {
7388 return new OCSetDataPushWait(a->clone(), b->clone());
7389 }
7390 };
7391 class OCSetDataPushed : public BinaryOpcode
7392 {
7393 public:
7394 OCSetDataPushed(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
7395 std::string toString() const;
7396 Opcode* clone() const
7397 {
7398 return new OCSetDataPushed(a->clone(), b->clone());
7399 }
7400 };
7401 class OCSetDataRaft : public BinaryOpcode
7402 {
7403 public:
7404 OCSetDataRaft(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
7405 std::string toString() const;
7406 Opcode* clone() const
7407 {
7408 return new OCSetDataRaft(a->clone(), b->clone());
7409 }
7410 };
7411 class OCSetDataResetRoom : public BinaryOpcode
7412 {
7413 public:
7414 OCSetDataResetRoom(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
7415 std::string toString() const;
7416 Opcode* clone() const
7417 {
7418 return new OCSetDataResetRoom(a->clone(), b->clone());
7419 }
7420 };
7421 class OCSetDataSavePoint : public BinaryOpcode
7422 {
7423 public:
7424 OCSetDataSavePoint(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
7425 std::string toString() const;
7426 Opcode* clone() const
7427 {
7428 return new OCSetDataSavePoint(a->clone(), b->clone());
7429 }
7430 };
7431 class OCSetDataFreeezeScreen : public BinaryOpcode
7432 {
7433 public:
7434 OCSetDataFreeezeScreen(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
7435 std::string toString() const;
7436 Opcode* clone() const
7437 {
7438 return new OCSetDataFreeezeScreen(a->clone(), b->clone());
7439 }
7440 };
7441 class OCSetDataSecretCombo : public BinaryOpcode
7442 {
7443 public:
7444 OCSetDataSecretCombo(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
7445 std::string toString() const;
7446 Opcode* clone() const
7447 {
7448 return new OCSetDataSecretCombo(a->clone(), b->clone());
7449 }
7450 };
7451 class OCSetDataSingular : public BinaryOpcode
7452 {
7453 public:
7454 OCSetDataSingular(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
7455 std::string toString() const;
7456 Opcode* clone() const
7457 {
7458 return new OCSetDataSingular(a->clone(), b->clone());
7459 }
7460 };
7461 class OCSetDataSlowMove : public BinaryOpcode
7462 {
7463 public:
7464 OCSetDataSlowMove(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
7465 std::string toString() const;
7466 Opcode* clone() const
7467 {
7468 return new OCSetDataSlowMove(a->clone(), b->clone());
7469 }
7470 };
7471 class OCSetDataStatue : public BinaryOpcode
7472 {
7473 public:
7474 OCSetDataStatue(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
7475 std::string toString() const;
7476 Opcode* clone() const
7477 {
7478 return new OCSetDataStatue(a->clone(), b->clone());
7479 }
7480 };
7481 class OCSetDataStepType : public BinaryOpcode
7482 {
7483 public:
7484 OCSetDataStepType(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
7485 std::string toString() const;
7486 Opcode* clone() const
7487 {
7488 return new OCSetDataStepType(a->clone(), b->clone());
7489 }
7490 };
7491 class OCSetDataSteoChange : public BinaryOpcode
7492 {
7493 public:
7494 OCSetDataSteoChange(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
7495 std::string toString() const;
7496 Opcode* clone() const
7497 {
7498 return new OCSetDataSteoChange(a->clone(), b->clone());
7499 }
7500 };
7501 class OCSetDataStrikeRem : public BinaryOpcode
7502 {
7503 public:
7504 OCSetDataStrikeRem(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
7505 std::string toString() const;
7506 Opcode* clone() const
7507 {
7508 return new OCSetDataStrikeRem(a->clone(), b->clone());
7509 }
7510 };
7511 class OCSetDataStrikeRemType : public BinaryOpcode
7512 {
7513 public:
7514 OCSetDataStrikeRemType(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
7515 std::string toString() const;
7516 Opcode* clone() const
7517 {
7518 return new OCSetDataStrikeRemType(a->clone(), b->clone());
7519 }
7520 };
7521 class OCSetDataStrikeChange : public BinaryOpcode
7522 {
7523 public:
7524 OCSetDataStrikeChange(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
7525 std::string toString() const;
7526 Opcode* clone() const
7527 {
7528 return new OCSetDataStrikeChange(a->clone(), b->clone());
7529 }
7530 };
7531 class OCSetDataStrikeChangeItem : public BinaryOpcode
7532 {
7533 public:
7534 OCSetDataStrikeChangeItem(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
7535 std::string toString() const;
7536 Opcode* clone() const
7537 {
7538 return new OCSetDataStrikeChangeItem(a->clone(), b->clone());
7539 }
7540 };
7541 class OCSetDataTouchItem : public BinaryOpcode
7542 {
7543 public:
7544 OCSetDataTouchItem(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
7545 std::string toString() const;
7546 Opcode* clone() const
7547 {
7548 return new OCSetDataTouchItem(a->clone(), b->clone());
7549 }
7550 };
7551 class OCSetDataTouchStairs : public BinaryOpcode
7552 {
7553 public:
7554 OCSetDataTouchStairs(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
7555 std::string toString() const;
7556 Opcode* clone() const
7557 {
7558 return new OCSetDataTouchStairs(a->clone(), b->clone());
7559 }
7560 };
7561 class OCSetDataTriggerType : public BinaryOpcode
7562 {
7563 public:
7564 OCSetDataTriggerType(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
7565 std::string toString() const;
7566 Opcode* clone() const
7567 {
7568 return new OCSetDataTriggerType(a->clone(), b->clone());
7569 }
7570 };
7571 class OCSetDataTriggerSens : public BinaryOpcode
7572 {
7573 public:
7574 OCSetDataTriggerSens(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
7575 std::string toString() const;
7576 Opcode* clone() const
7577 {
7578 return new OCSetDataTriggerSens(a->clone(), b->clone());
7579 }
7580 };
7581 class OCSetDataWarpType : public BinaryOpcode
7582 {
7583 public:
7584 OCSetDataWarpType(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
7585 std::string toString() const;
7586 Opcode* clone() const
7587 {
7588 return new OCSetDataWarpType(a->clone(), b->clone());
7589 }
7590 };
7591 class OCSetDataWarpSens : public BinaryOpcode
7592 {
7593 public:
7594 OCSetDataWarpSens(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
7595 std::string toString() const;
7596 Opcode* clone() const
7597 {
7598 return new OCSetDataWarpSens(a->clone(), b->clone());
7599 }
7600 };
7601 class OCSetDataWarpDirect : public BinaryOpcode
7602 {
7603 public:
7604 OCSetDataWarpDirect(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
7605 std::string toString() const;
7606 Opcode* clone() const
7607 {
7608 return new OCSetDataWarpDirect(a->clone(), b->clone());
7609 }
7610 };
7611 class OCSetDataWarpLoc : public BinaryOpcode
7612 {
7613 public:
7614 OCSetDataWarpLoc(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
7615 std::string toString() const;
7616 Opcode* clone() const
7617 {
7618 return new OCSetDataWarpLoc(a->clone(), b->clone());
7619 }
7620 };
7621 class OCSetDataWater : public BinaryOpcode
7622 {
7623 public:
7624 OCSetDataWater(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
7625 std::string toString() const;
7626 Opcode* clone() const
7627 {
7628 return new OCSetDataWater(a->clone(), b->clone());
7629 }
7630 };
7631 class OCSetDataWhistle : public BinaryOpcode
7632 {
7633 public:
7634 OCSetDataWhistle(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
7635 std::string toString() const;
7636 Opcode* clone() const
7637 {
7638 return new OCSetDataWhistle(a->clone(), b->clone());
7639 }
7640 };
7641 class OCSetDataWeapBlockLevel : public BinaryOpcode
7642 {
7643 public:
7644 OCSetDataWeapBlockLevel(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
7645 std::string toString() const;
7646 Opcode* clone() const
7647 {
7648 return new OCSetDataWeapBlockLevel(a->clone(), b->clone());
7649 }
7650 };
7651 class OCSetDataTile : public BinaryOpcode
7652 {
7653 public:
7654 OCSetDataTile(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
7655 std::string toString() const;
7656 Opcode* clone() const
7657 {
7658 return new OCSetDataTile(a->clone(), b->clone());
7659 }
7660 };
7661 class OCSetDataFlip : public BinaryOpcode
7662 {
7663 public:
7664 OCSetDataFlip(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
7665 std::string toString() const;
7666 Opcode* clone() const
7667 {
7668 return new OCSetDataFlip(a->clone(), b->clone());
7669 }
7670 };
7671 class OCSetDataWalkability : public BinaryOpcode
7672 {
7673 public:
7674 OCSetDataWalkability(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
7675 std::string toString() const;
7676 Opcode* clone() const
7677 {
7678 return new OCSetDataWalkability(a->clone(), b->clone());
7679 }
7680 };
7681 class OCSetDataType : public BinaryOpcode
7682 {
7683 public:
7684 OCSetDataType(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
7685 std::string toString() const;
7686 Opcode* clone() const
7687 {
7688 return new OCSetDataType(a->clone(), b->clone());
7689 }
7690 };
7691 class OCSetDataCSets : public BinaryOpcode
7692 {
7693 public:
7694 OCSetDataCSets(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
7695 std::string toString() const;
7696 Opcode* clone() const
7697 {
7698 return new OCSetDataCSets(a->clone(), b->clone());
7699 }
7700 };
7701 class OCSetDataFoo : public BinaryOpcode
7702 {
7703 public:
7704 OCSetDataFoo(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
7705 std::string toString() const;
7706 Opcode* clone() const
7707 {
7708 return new OCSetDataFoo(a->clone(), b->clone());
7709 }
7710 };
7711 class OCSetDataFrames : public BinaryOpcode
7712 {
7713 public:
7714 OCSetDataFrames(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
7715 std::string toString() const;
7716 Opcode* clone() const
7717 {
7718 return new OCSetDataFrames(a->clone(), b->clone());
7719 }
7720 };
7721 class OCSetDataSpeed : public BinaryOpcode
7722 {
7723 public:
7724 OCSetDataSpeed(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
7725 std::string toString() const;
7726 Opcode* clone() const
7727 {
7728 return new OCSetDataSpeed(a->clone(), b->clone());
7729 }
7730 };
7731 class OCSetDataNext : public BinaryOpcode
7732 {
7733 public:
7734 OCSetDataNext(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
7735 std::string toString() const;
7736 Opcode* clone() const
7737 {
7738 return new OCSetDataNext(a->clone(), b->clone());
7739 }
7740 };
7741 class OCSetDataNextCSet : public BinaryOpcode
7742 {
7743 public:
7744 OCSetDataNextCSet(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
7745 std::string toString() const;
7746 Opcode* clone() const
7747 {
7748 return new OCSetDataNextCSet(a->clone(), b->clone());
7749 }
7750 };
7751 class OCSetDataFlag : public BinaryOpcode
7752 {
7753 public:
7754 OCSetDataFlag(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
7755 std::string toString() const;
7756 Opcode* clone() const
7757 {
7758 return new OCSetDataFlag(a->clone(), b->clone());
7759 }
7760 };
7761 class OCSetDataSkipAnim : public BinaryOpcode
7762 {
7763 public:
7764 OCSetDataSkipAnim(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
7765 std::string toString() const;
7766 Opcode* clone() const
7767 {
7768 return new OCSetDataSkipAnim(a->clone(), b->clone());
7769 }
7770 };
7771
7772 class OCDataLadderPass : public BinaryOpcode
7773 {
7774 public:
7775 OCDataLadderPass(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
7776 std::string toString() const;
7777 Opcode* clone() const
7778 {
7779 return new OCDataLadderPass(a->clone(), b->clone());
7780 }
7781 };
7782
7783 class OCSetDataLadderPass : public BinaryOpcode
7784 {
7785 public:
7786 OCSetDataLadderPass(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
7787 std::string toString() const;
7788 Opcode* clone() const
7789 {
7790 return new OCSetDataLadderPass(a->clone(), b->clone());
7791 }
7792 };
7793 class OCSetDataTimer : public BinaryOpcode
7794 {
7795 public:
7796 OCSetDataTimer(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
7797 std::string toString() const;
7798 Opcode* clone() const
7799 {
7800 return new OCSetDataTimer(a->clone(), b->clone());
7801 }
7802 };
7803 class OCSetDataAnimY : public BinaryOpcode
7804 {
7805 public:
7806 OCSetDataAnimY(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
7807 std::string toString() const;
7808 Opcode* clone() const
7809 {
7810 return new OCSetDataAnimY(a->clone(), b->clone());
7811 }
7812 };
7813 class OCSetDataAnimFlags : public BinaryOpcode
7814 {
7815 public:
7816 OCSetDataAnimFlags(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
7817 std::string toString() const;
7818 Opcode* clone() const
7819 {
7820 return new OCSetDataAnimFlags(a->clone(), b->clone());
7821 }
7822 };
7823 class OCSetDataBlockWeapon : public UnaryOpcode
7824 {
7825 public:
7826 OCSetDataBlockWeapon(Argument *A) : UnaryOpcode(A) {}
7827 std::string toString() const;
7828 Opcode* clone() const
7829 {
7830 return new OCSetDataBlockWeapon(a->clone());
7831 }
7832 };
7833 class OCSetDataExpansion : public UnaryOpcode
7834 {
7835 public:
7836 OCSetDataExpansion(Argument *A) : UnaryOpcode(A) {}
7837 std::string toString() const;
7838 Opcode* clone() const
7839 {
7840 return new OCSetDataExpansion(a->clone());
7841 }
7842 };
7843 class OCSetDataStrikeWeapon : public UnaryOpcode
7844 {
7845 public:
7846 OCSetDataStrikeWeapon(Argument *A) : UnaryOpcode(A) {}
7847 std::string toString() const;
7848 Opcode* clone() const
7849 {
7850 return new OCSetDataStrikeWeapon(a->clone());
7851 }
7852 };
7853
7854 class OCSetDataWinGame : public BinaryOpcode
7855 {
7856 public:
7857 OCSetDataWinGame(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
7858 std::string toString() const;
7859 Opcode* clone() const
7860 {
7861 return new OCSetDataWinGame(a->clone(), b->clone());
7862 }
7863 };
7864
7865 //SpriteData
7866 class OSDataTile : public BinaryOpcode
7867 {
7868 public:
7869 OSDataTile(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
7870 std::string toString() const;
7871 Opcode* clone() const
7872 {
7873 return new OSDataTile(a->clone(), b->clone());
7874 }
7875 };
7876
7877 class OSDataMisc : public BinaryOpcode
7878 {
7879 public:
7880 OSDataMisc(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
7881 std::string toString() const;
7882 Opcode* clone() const
7883 {
7884 return new OSDataMisc(a->clone(), b->clone());
7885 }
7886 };
7887
7888 class OSDataCSets : public BinaryOpcode
7889 {
7890 public:
7891 OSDataCSets(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
7892 std::string toString() const;
7893 Opcode* clone() const
7894 {
7895 return new OSDataCSets(a->clone(), b->clone());
7896 }
7897 };
7898
7899 class OSDataFrames : public BinaryOpcode
7900 {
7901 public:
7902 OSDataFrames(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
7903 std::string toString() const;
7904 Opcode* clone() const
7905 {
7906 return new OSDataFrames(a->clone(), b->clone());
7907 }
7908 };
7909
7910 class OSDataSpeed : public BinaryOpcode
7911 {
7912 public:
7913 OSDataSpeed(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
7914 std::string toString() const;
7915 Opcode* clone() const
7916 {
7917 return new OSDataSpeed(a->clone(), b->clone());
7918 }
7919 };
7920 class OSDataType : public BinaryOpcode
7921 {
7922 public:
7923 OSDataType(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
7924 std::string toString() const;
7925 Opcode* clone() const
7926 {
7927 return new OSDataType(a->clone(), b->clone());
7928 }
7929 };
7930
7931 class OSSetDataTile : public BinaryOpcode
7932 {
7933 public:
7934 OSSetDataTile(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
7935 std::string toString() const;
7936 Opcode* clone() const
7937 {
7938 return new OSSetDataTile(a->clone(), b->clone());
7939 }
7940 };
7941
7942 class OSSetDataMisc : public BinaryOpcode
7943 {
7944 public:
7945 OSSetDataMisc(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
7946 std::string toString() const;
7947 Opcode* clone() const
7948 {
7949 return new OSSetDataMisc(a->clone(), b->clone());
7950 }
7951 };
7952
7953 class OSSetDataFrames : public BinaryOpcode
7954 {
7955 public:
7956 OSSetDataFrames(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
7957 std::string toString() const;
7958 Opcode* clone() const
7959 {
7960 return new OSSetDataFrames(a->clone(), b->clone());
7961 }
7962 };
7963
7964 class OSSetDataSpeed : public BinaryOpcode
7965 {
7966 public:
7967 OSSetDataSpeed(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
7968 std::string toString() const;
7969 Opcode* clone() const
7970 {
7971 return new OSSetDataSpeed(a->clone(), b->clone());
7972 }
7973 };
7974 class OSSetDataType : public BinaryOpcode
7975 {
7976 public:
7977 OSSetDataType(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
7978 std::string toString() const;
7979 Opcode* clone() const
7980 {
7981 return new OSSetDataType(a->clone(), b->clone());
7982 }
7983 };
7984
7985 //Continue Screen
7986
7987
7988 class OSSetContinueScreen : public BinaryOpcode
7989 {
7990 public:
7991 OSSetContinueScreen(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
7992 std::string toString() const;
7993 Opcode* clone() const
7994 {
7995 return new OSSetContinueScreen(a->clone(), b->clone());
7996 }
7997 };
7998 class OSSetContinueString : public BinaryOpcode
7999 {
8000 public:
8001 OSSetContinueString(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
8002 std::string toString() const;
8003 Opcode* clone() const
8004 {
8005 return new OSSetContinueString (a->clone(), b->clone());
8006 }
8007 };
8008
8009 //Visual effects with one bool input
8010
8011
8012 class OWavyR : public UnaryOpcode
8013 {
8014 public:
8015 OWavyR(Argument *A) : UnaryOpcode(A) {}
8016 std::string toString() const;
8017 Opcode* clone() const
8018 {
8019 return new OWavyR(a->clone());
8020 }
8021 };
8022
8023 class OZapR : public UnaryOpcode
8024 {
8025 public:
8026 OZapR(Argument *A) : UnaryOpcode(A) {}
8027 std::string toString() const;
8028 Opcode* clone() const
8029 {
8030 return new OZapR(a->clone());
8031 }
8032 };
8033
8034 class OGreyscaleR : public UnaryOpcode
8035 {
8036 public:
8037 OGreyscaleR(Argument *A) : UnaryOpcode(A) {}
8038 std::string toString() const;
8039 Opcode* clone() const
8040 {
8041 return new OGreyscaleR(a->clone());
8042 }
8043 };
8044
8045 class OMonochromeR : public UnaryOpcode
8046 {
8047 public:
8048 OMonochromeR(Argument *A) : UnaryOpcode(A) {}
8049 std::string toString() const;
8050 Opcode* clone() const
8051 {
8052 return new OMonochromeR(a->clone());
8053 }
8054 };
8055
8056 class OClearTint : public Opcode
8057 {
8058 public:
8059 std::string toString() const;
8060 Opcode* clone() const
8061 {
8062 return new OClearTint();
8063 }
8064 };
8065
8066 class OTintR : public Opcode
8067 {
8068 public:
8069 std::string toString() const;
8070 Opcode* clone() const
8071 {
8072 return new OTintR();
8073 }
8074 };
8075
8076 class OMonoHueR : public Opcode
8077 {
8078 public:
8079 std::string toString() const;
8080 Opcode* clone() const
8081 {
8082 return new OMonoHueR();
8083 }
8084 };
8085
8086 //bitmap functions
8087
8088 class OBMPDrawBitmapExRegister : public Opcode
8089 {
8090 public:
8091 std::string toString() const;
8092 Opcode* clone() const
8093 {
8094 return new OBMPDrawBitmapExRegister();
8095 }
8096 };
8097 class OBMPBlitTO : public Opcode
8098 {
8099 public:
8100 std::string toString() const;
8101 Opcode* clone() const
8102 {
8103 return new OBMPBlitTO();
8104 }
8105 };
8106
8107 class OBMPGetPixel : public Opcode
8108 {
8109 public:
8110 std::string toString() const;
8111 Opcode* clone() const
8112 {
8113 return new OBMPGetPixel();
8114 }
8115 };
8116 class OBMPMode7 : public Opcode
8117 {
8118 public:
8119 std::string toString() const;
8120 Opcode* clone() const
8121 {
8122 return new OBMPMode7();
8123 }
8124 };
8125 class OBMPQuadRegister : public Opcode
8126 {
8127 public:
8128 std::string toString() const;
8129 Opcode* clone() const
8130 {
8131 return new OBMPQuadRegister();
8132 }
8133 };
8134 class OBMPTriangleRegister : public Opcode
8135 {
8136 public:
8137 std::string toString() const;
8138 Opcode* clone() const
8139 {
8140 return new OBMPTriangleRegister();
8141 }
8142 };
8143 class OBMPQuad3DRegister : public Opcode
8144 {
8145 public:
8146 std::string toString() const;
8147 Opcode* clone() const
8148 {
8149 return new OBMPQuad3DRegister();
8150 }
8151 };
8152 class OBMPTriangle3DRegister : public Opcode
8153 {
8154 public:
8155 std::string toString() const;
8156 Opcode* clone() const
8157 {
8158 return new OBMPTriangle3DRegister();
8159 }
8160 };
8161 class OBMPDrawLayerRegister : public Opcode
8162 {
8163 public:
8164 std::string toString() const;
8165 Opcode* clone() const
8166 {
8167 return new OBMPDrawLayerRegister();
8168 }
8169 };
8170 class OBMPDrawScreenRegister : public Opcode
8171 {
8172 public:
8173 std::string toString() const;
8174 Opcode* clone() const
8175 {
8176 return new OBMPDrawScreenRegister();
8177 }
8178 };
8179 class OBMPDrawStringRegister : public Opcode
8180 {
8181 public:
8182 std::string toString() const;
8183 Opcode* clone() const
8184 {
8185 return new OBMPDrawStringRegister();
8186 }
8187 };
8188 class OBMPDrawString2Register : public Opcode
8189 {
8190 public:
8191 std::string toString() const;
8192 Opcode* clone() const
8193 {
8194 return new OBMPDrawString2Register();
8195 }
8196 };
8197 class OBMPFastComboRegister : public Opcode
8198 {
8199 public:
8200 std::string toString() const;
8201 Opcode* clone() const
8202 {
8203 return new OBMPFastComboRegister();
8204 }
8205 };
8206 class OBMPFastTileRegister : public Opcode
8207 {
8208 public:
8209 std::string toString() const;
8210 Opcode* clone() const
8211 {
8212 return new OBMPFastTileRegister();
8213 }
8214 };
8215 class OBMPDrawComboRegister : public Opcode
8216 {
8217 public:
8218 std::string toString() const;
8219 Opcode* clone() const
8220 {
8221 return new OBMPDrawComboRegister();
8222 }
8223 };
8224 class OBMPDrawComboCloakedRegister : public Opcode
8225 {
8226 public:
8227 std::string toString() const;
8228 Opcode* clone() const
8229 {
8230 return new OBMPDrawComboCloakedRegister();
8231 }
8232 };
8233 class OBMPDrawTileRegister : public Opcode
8234 {
8235 public:
8236 std::string toString() const;
8237 Opcode* clone() const
8238 {
8239 return new OBMPDrawTileRegister();
8240 }
8241 };
8242 class OBMPDrawTileCloakedRegister : public Opcode
8243 {
8244 public:
8245 std::string toString() const;
8246 Opcode* clone() const
8247 {
8248 return new OBMPDrawTileCloakedRegister();
8249 }
8250 };
8251 class OBMPDrawIntRegister : public Opcode
8252 {
8253 public:
8254 std::string toString() const;
8255 Opcode* clone() const
8256 {
8257 return new OBMPDrawIntRegister();
8258 }
8259 };
8260
8261 class OBMPDrawCharRegister : public Opcode
8262 {
8263 public:
8264 std::string toString() const;
8265 Opcode* clone() const
8266 {
8267 return new OBMPDrawCharRegister();
8268 }
8269 };
8270 class OBMPPutPixelRegister : public Opcode
8271 {
8272 public:
8273 std::string toString() const;
8274 Opcode* clone() const
8275 {
8276 return new OBMPPutPixelRegister();
8277 }
8278 };
8279 class OBMPSplineRegister : public Opcode
8280 {
8281 public:
8282 std::string toString() const;
8283 Opcode* clone() const
8284 {
8285 return new OBMPSplineRegister();
8286 }
8287 };
8288 class OBMPLineRegister : public Opcode
8289 {
8290 public:
8291 std::string toString() const;
8292 Opcode* clone() const
8293 {
8294 return new OBMPLineRegister();
8295 }
8296 };
8297 class OBMPEllipseRegister : public Opcode
8298 {
8299 public:
8300 std::string toString() const;
8301 Opcode* clone() const
8302 {
8303 return new OBMPEllipseRegister();
8304 }
8305 };
8306 class OBMPArcRegister : public Opcode
8307 {
8308 public:
8309 std::string toString() const;
8310 Opcode* clone() const
8311 {
8312 return new OBMPArcRegister();
8313 }
8314 };
8315 class OBMPCircleRegister : public Opcode
8316 {
8317 public:
8318 std::string toString() const;
8319 Opcode* clone() const
8320 {
8321 return new OBMPCircleRegister();
8322 }
8323 };
8324 class OBMPRectangleRegister : public Opcode
8325 {
8326 public:
8327 std::string toString() const;
8328 Opcode* clone() const
8329 {
8330 return new OBMPRectangleRegister();
8331 }
8332 };
8333 class OBMPFrameRegister : public Opcode
8334 {
8335 public:
8336 std::string toString() const;
8337 Opcode* clone() const
8338 {
8339 return new OBMPFrameRegister();
8340 }
8341 };
8342
8343 class OHeroWarpExRegister : public UnaryOpcode
8344 {
8345 public:
8346 OHeroWarpExRegister(Argument *A) : UnaryOpcode(A) {}
8347 std::string toString() const;
8348 Opcode* clone() const
8349 {
8350 return new OHeroWarpExRegister(a->clone());
8351 }
8352 };
8353
8354 class OHeroExplodeRegister : public UnaryOpcode
8355 {
8356 public:
8357 OHeroExplodeRegister(Argument *A) : UnaryOpcode(A) {}
8358 std::string toString() const;
8359 Opcode* clone() const
8360 {
8361 return new OHeroExplodeRegister(a->clone());
8362 }
8363 };
8364
8365 class OSwitchNPC : public UnaryOpcode
8366 {
8367 public:
8368 OSwitchNPC(Argument *A) : UnaryOpcode(A) {}
8369 std::string toString() const;
8370 Opcode* clone() const
8371 {
8372 return new OSwitchNPC(a->clone());
8373 }
8374 };
8375 class OSwitchItem : public UnaryOpcode
8376 {
8377 public:
8378 OSwitchItem(Argument *A) : UnaryOpcode(A) {}
8379 std::string toString() const;
8380 Opcode* clone() const
8381 {
8382 return new OSwitchItem(a->clone());
8383 }
8384 };
8385 class OSwitchLW : public UnaryOpcode
8386 {
8387 public:
8388 OSwitchLW(Argument *A) : UnaryOpcode(A) {}
8389 std::string toString() const;
8390 Opcode* clone() const
8391 {
8392 return new OSwitchLW(a->clone());
8393 }
8394 };
8395 class OSwitchEW : public UnaryOpcode
8396 {
8397 public:
8398 OSwitchEW(Argument *A) : UnaryOpcode(A) {}
8399 std::string toString() const;
8400 Opcode* clone() const
8401 {
8402 return new OSwitchEW(a->clone());
8403 }
8404 };
8405 class OSwitchCombo : public BinaryOpcode
8406 {
8407 public:
8408 OSwitchCombo(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
8409 std::string toString() const;
8410 Opcode* clone() const
8411 {
8412 return new OSwitchCombo(a->clone(),b->clone());
8413 }
8414 };
8415 class OKillPlayer : public UnaryOpcode
8416 {
8417 public:
8418 OKillPlayer(Argument *A) : UnaryOpcode(A) {}
8419 std::string toString() const;
8420 Opcode* clone() const
8421 {
8422 return new OKillPlayer(a->clone());
8423 }
8424 };
8425 class OScreenDoSpawn : public Opcode
8426 {
8427 public:
8428 OScreenDoSpawn() : Opcode() {}
8429 std::string toString() const;
8430 Opcode* clone() const
8431 {
8432 return new OScreenDoSpawn();
8433 }
8434 };
8435 class OScreenTriggerCombo : public BinaryOpcode
8436 {
8437 public:
8438 OScreenTriggerCombo(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
8439 std::string toString() const;
8440 Opcode* clone() const
8441 {
8442 return new OScreenTriggerCombo(a->clone(),b->clone());
8443 }
8444 };
8445
8446 class ONPCMovePaused : public Opcode
8447 {
8448 public:
8449 ONPCMovePaused() : Opcode() {}
8450 std::string toString() const;
8451 Opcode* clone() const
8452 {
8453 return new ONPCMovePaused();
8454 }
8455 };
8456 class ONPCMove : public Opcode
8457 {
8458 public:
8459 ONPCMove() : Opcode() {}
8460 std::string toString() const;
8461 Opcode* clone() const
8462 {
8463 return new ONPCMove();
8464 }
8465 };
8466 class ONPCMoveAngle : public Opcode
8467 {
8468 public:
8469 ONPCMoveAngle() : Opcode() {}
8470 std::string toString() const;
8471 Opcode* clone() const
8472 {
8473 return new ONPCMoveAngle();
8474 }
8475 };
8476 class ONPCMoveXY : public Opcode
8477 {
8478 public:
8479 ONPCMoveXY() : Opcode() {}
8480 std::string toString() const;
8481 Opcode* clone() const
8482 {
8483 return new ONPCMoveXY();
8484 }
8485 };
8486 class ONPCCanMoveDir : public Opcode
8487 {
8488 public:
8489 ONPCCanMoveDir() : Opcode() {}
8490 std::string toString() const;
8491 Opcode* clone() const
8492 {
8493 return new ONPCCanMoveDir();
8494 }
8495 };
8496 class ONPCCanMoveAngle : public Opcode
8497 {
8498 public:
8499 ONPCCanMoveAngle() : Opcode() {}
8500 std::string toString() const;
8501 Opcode* clone() const
8502 {
8503 return new ONPCCanMoveAngle();
8504 }
8505 };
8506 class ONPCCanMoveXY : public Opcode
8507 {
8508 public:
8509 ONPCCanMoveXY() : Opcode() {}
8510 std::string toString() const;
8511 Opcode* clone() const
8512 {
8513 return new ONPCCanMoveXY();
8514 }
8515 };
8516
8517 class OGetSystemRTCRegister : public UnaryOpcode
8518 {
8519 public:
8520 OGetSystemRTCRegister(Argument *A) : UnaryOpcode(A) {}
8521 std::string toString() const;
8522 Opcode* clone() const
8523 {
8524 return new OGetSystemRTCRegister(a->clone());
8525 }
8526 };
8527
8528
8529 class ONPCExplodeRegister : public UnaryOpcode
8530 {
8531 public:
8532 ONPCExplodeRegister(Argument *A) : UnaryOpcode(A) {}
8533 std::string toString() const;
8534 Opcode* clone() const
8535 {
8536 return new ONPCExplodeRegister(a->clone());
8537 }
8538 };
8539
8540 class OLWeaponExplodeRegister : public UnaryOpcode
8541 {
8542 public:
8543 OLWeaponExplodeRegister(Argument *A) : UnaryOpcode(A) {}
8544 std::string toString() const;
8545 Opcode* clone() const
8546 {
8547 return new OLWeaponExplodeRegister(a->clone());
8548 }
8549 };
8550
8551 class OEWeaponExplodeRegister : public UnaryOpcode
8552 {
8553 public:
8554 OEWeaponExplodeRegister(Argument *A) : UnaryOpcode(A) {}
8555 std::string toString() const;
8556 Opcode* clone() const
8557 {
8558 return new OEWeaponExplodeRegister(a->clone());
8559 }
8560 };
8561
8562 class OItemExplodeRegister : public UnaryOpcode
8563 {
8564 public:
8565 OItemExplodeRegister(Argument *A) : UnaryOpcode(A) {}
8566 std::string toString() const;
8567 Opcode* clone() const
8568 {
8569 return new OItemExplodeRegister(a->clone());
8570 }
8571 };
8572
8573 class ORunItemScript : public UnaryOpcode
8574 {
8575 public:
8576 ORunItemScript(Argument *A) : UnaryOpcode(A) {}
8577 std::string toString() const;
8578 Opcode* clone() const
8579 {
8580 return new ORunItemScript(a->clone());
8581 }
8582 };
8583 /*
8584 class ORunItemScript : public Opcode
8585 {
8586 public:
8587 std::string toString() const;
8588 Opcode* clone() const
8589 {
8590 return new ORunItemScript();
8591 }
8592 };
8593 */
8594
8595 //new npc-> functions for npc scripts
8596 class ONPCDead : public UnaryOpcode
8597 {
8598 public:
8599 ONPCDead(Argument *A) : UnaryOpcode(A) {}
8600 std::string toString() const;
8601 Opcode* clone() const
8602 {
8603 return new ONPCDead(a->clone());
8604 }
8605 };
8606 class ONPCCanSlide : public UnaryOpcode
8607 {
8608 public:
8609 ONPCCanSlide(Argument *A) : UnaryOpcode(A) {}
8610 std::string toString() const;
8611 Opcode* clone() const
8612 {
8613 return new ONPCCanSlide(a->clone());
8614 }
8615 };
8616 class ONPCSlide : public UnaryOpcode
8617 {
8618 public:
8619 ONPCSlide(Argument *A) : UnaryOpcode(A) {}
8620 std::string toString() const;
8621 Opcode* clone() const
8622 {
8623 return new ONPCSlide(a->clone());
8624 }
8625 };
8626 class ONPCRemove : public Opcode
8627 {
8628 public:
8629 ONPCRemove() : Opcode() {}
8630 std::string toString() const;
8631 Opcode* clone() const
8632 {
8633 return new ONPCRemove();
8634 }
8635 };
8636
8637 class OLWpnRemove : public Opcode
8638 {
8639 public:
8640 OLWpnRemove() : Opcode() {}
8641 std::string toString() const;
8642 Opcode* clone() const
8643 {
8644 return new OLWpnRemove();
8645 }
8646 };
8647 class OEWpnRemove : public Opcode
8648 {
8649 public:
8650 OEWpnRemove() : Opcode() {}
8651 std::string toString() const;
8652 Opcode* clone() const
8653 {
8654 return new OEWpnRemove();
8655 }
8656 };
8657 class OItemRemove : public Opcode
8658 {
8659 public:
8660 OItemRemove() : Opcode() {}
8661 std::string toString() const;
8662 Opcode* clone() const
8663 {
8664 return new OItemRemove();
8665 }
8666 };
8667 class ONPCStopSFX : public Opcode
8668 {
8669 public:
8670 ONPCStopSFX() : Opcode() {}
8671 std::string toString() const;
8672 Opcode* clone() const
8673 {
8674 return new ONPCStopSFX();
8675 }
8676 };
8677 class ONPCAttack : public Opcode
8678 {
8679 public:
8680 ONPCAttack() : Opcode() {}
8681 std::string toString() const;
8682 Opcode* clone() const
8683 {
8684 return new ONPCAttack();
8685 }
8686 };
8687 class ONPCNewDir : public UnaryOpcode
8688 {
8689 public:
8690 ONPCNewDir(Argument *A) : UnaryOpcode(A) {}
8691 std::string toString() const;
8692 Opcode* clone() const
8693 {
8694 return new ONPCNewDir(a->clone());
8695 }
8696 };
8697 class ONPCConstWalk : public UnaryOpcode
8698 {
8699 public:
8700 ONPCConstWalk(Argument *A) : UnaryOpcode(A) {}
8701 std::string toString() const;
8702 Opcode* clone() const
8703 {
8704 return new ONPCConstWalk(a->clone());
8705 }
8706 };
8707 class ONPCConstWalk8 : public UnaryOpcode
8708 {
8709 public:
8710 ONPCConstWalk8(Argument *A) : UnaryOpcode(A) {}
8711 std::string toString() const;
8712 Opcode* clone() const
8713 {
8714 return new ONPCConstWalk8(a->clone());
8715 }
8716 };
8717 class ONPCVarWalk : public UnaryOpcode
8718 {
8719 public:
8720 ONPCVarWalk(Argument *A) : UnaryOpcode(A) {}
8721 std::string toString() const;
8722 Opcode* clone() const
8723 {
8724 return new ONPCVarWalk(a->clone());
8725 }
8726 };
8727 class ONPCVarWalk8 : public UnaryOpcode
8728 {
8729 public:
8730 ONPCVarWalk8(Argument *A) : UnaryOpcode(A) {}
8731 std::string toString() const;
8732 Opcode* clone() const
8733 {
8734 return new ONPCVarWalk8(a->clone());
8735 }
8736 };
8737 class ONPCHaltWalk : public UnaryOpcode
8738 {
8739 public:
8740 ONPCHaltWalk(Argument *A) : UnaryOpcode(A) {}
8741 std::string toString() const;
8742 Opcode* clone() const
8743 {
8744 return new ONPCHaltWalk(a->clone());
8745 }
8746 };
8747 class ONPCHaltWalk8 : public UnaryOpcode
8748 {
8749 public:
8750 ONPCHaltWalk8(Argument *A) : UnaryOpcode(A) {}
8751 std::string toString() const;
8752 Opcode* clone() const
8753 {
8754 return new ONPCHaltWalk8(a->clone());
8755 }
8756 };
8757 class ONPCFloatWalk : public UnaryOpcode
8758 {
8759 public:
8760 ONPCFloatWalk(Argument *A) : UnaryOpcode(A) {}
8761 std::string toString() const;
8762 Opcode* clone() const
8763 {
8764 return new ONPCFloatWalk(a->clone());
8765 }
8766 };
8767 class ONPCBreatheFire : public UnaryOpcode
8768 {
8769 public:
8770 ONPCBreatheFire(Argument *A) : UnaryOpcode(A) {}
8771 std::string toString() const;
8772 Opcode* clone() const
8773 {
8774 return new ONPCBreatheFire(a->clone());
8775 }
8776 };
8777 class ONPCNewDir8 : public UnaryOpcode
8778 {
8779 public:
8780 ONPCNewDir8(Argument *A) : UnaryOpcode(A) {}
8781 std::string toString() const;
8782 Opcode* clone() const
8783 {
8784 return new ONPCNewDir8(a->clone());
8785 }
8786 };
8787 class ONPCHeroInRange : public UnaryOpcode
8788 {
8789 public:
8790 ONPCHeroInRange(Argument *A) : UnaryOpcode(A) {}
8791 std::string toString() const;
8792 Opcode* clone() const
8793 {
8794 return new ONPCHeroInRange(a->clone());
8795 }
8796 };
8797 class ONPCAdd : public UnaryOpcode
8798 {
8799 public:
8800 ONPCAdd(Argument *A) : UnaryOpcode(A) {}
8801 std::string toString() const;
8802 Opcode* clone() const
8803 {
8804 return new ONPCAdd(a->clone());
8805 }
8806 };
8807 class ONPCCanMove : public UnaryOpcode
8808 {
8809 public:
8810 ONPCCanMove(Argument *A) : UnaryOpcode(A) {}
8811 std::string toString() const;
8812 Opcode* clone() const
8813 {
8814 return new ONPCCanMove(a->clone());
8815 }
8816 };
8817 class ONPCHitWith : public UnaryOpcode
8818 {
8819 public:
8820 ONPCHitWith(Argument *A) : UnaryOpcode(A) {}
8821 std::string toString() const;
8822 Opcode* clone() const
8823 {
8824 return new ONPCHitWith(a->clone());
8825 }
8826 };
8827 class ONPCKnockback : public BinaryOpcode
8828 {
8829 public:
8830 ONPCKnockback(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
8831 std::string toString() const;
8832 Opcode* clone() const
8833 {
8834 return new ONPCKnockback(a->clone(),b->clone());
8835 }
8836 };
8837 class OGetNPCDataName : public UnaryOpcode
8838 {
8839 public:
8840 OGetNPCDataName(Argument *A) : UnaryOpcode(A) {}
8841 std::string toString() const;
8842 Opcode* clone() const
8843 {
8844 return new OGetNPCDataName(a->clone());
8845 }
8846 };
8847
8848 class OIsValidBitmap : public UnaryOpcode
8849 {
8850 public:
8851 OIsValidBitmap(Argument *A) : UnaryOpcode(A) {}
8852 std::string toString() const;
8853 Opcode* clone() const
8854 {
8855 return new OIsValidBitmap(a->clone());
8856 }
8857 };
8858
8859 class OIsAllocatedBitmap : public UnaryOpcode
8860 {
8861 public:
8862 OIsAllocatedBitmap(Argument *A) : UnaryOpcode(A) {}
8863 std::string toString() const;
8864 Opcode* clone() const
8865 {
8866 return new OIsAllocatedBitmap(a->clone());
8867 }
8868 };
8869
8870 class OAllocateBitmap : public UnaryOpcode
8871 {
8872 public:
8873 OAllocateBitmap(Argument *A) : UnaryOpcode(A) {}
8874 std::string toString() const;
8875 Opcode* clone() const
8876 {
8877 return new OAllocateBitmap(a->clone());
8878 }
8879 };
8880
8881 class OReadBitmap : public Opcode
8882 {
8883 public:
8884 std::string toString() const;
8885 Opcode* clone() const
8886 {
8887 return new OReadBitmap();
8888 }
8889 };
8890
8891 class OClearBitmap : public Opcode
8892 {
8893 public:
8894 std::string toString() const;
8895 Opcode* clone() const
8896 {
8897 return new OClearBitmap();
8898 }
8899 };
8900
8901 class OBitmapClearToColor : public Opcode
8902 {
8903 public:
8904 std::string toString() const;
8905 Opcode* clone() const
8906 {
8907 return new OBitmapClearToColor();
8908 }
8909 };
8910
8911 class ORegenerateBitmap : public Opcode
8912 {
8913 public:
8914 std::string toString() const;
8915 Opcode* clone() const
8916 {
8917 return new ORegenerateBitmap();
8918 }
8919 };
8920
8921 class OWriteBitmap : public Opcode
8922 {
8923 public:
8924 std::string toString() const;
8925 Opcode* clone() const
8926 {
8927 return new OWriteBitmap();
8928 }
8929 };
8930
8931 class OBitmapFree : public Opcode
8932 {
8933 public:
8934 std::string toString() const;
8935 Opcode* clone() const
8936 {
8937 return new OBitmapFree();
8938 }
8939 };
8940
8941 class OBitmapOwn : public Opcode
8942 {
8943 public:
8944 std::string toString() const;
8945 Opcode* clone() const
8946 {
8947 return new OBitmapOwn();
8948 }
8949 };
8950 class OFileOwn : public Opcode
8951 {
8952 public:
8953 std::string toString() const;
8954 Opcode* clone() const
8955 {
8956 return new OFileOwn();
8957 }
8958 };
8959 class ODirectoryOwn : public Opcode
8960 {
8961 public:
8962 std::string toString() const;
8963 Opcode* clone() const
8964 {
8965 return new ODirectoryOwn();
8966 }
8967 };
8968 class ORNGOwn : public Opcode
8969 {
8970 public:
8971 std::string toString() const;
8972 Opcode* clone() const
8973 {
8974 return new ORNGOwn();
8975 }
8976 };
8977
8978 class OBitmapWriteTile : public Opcode
8979 {
8980 public:
8981 std::string toString() const;
8982 Opcode* clone() const
8983 {
8984 return new OBitmapWriteTile();
8985 }
8986 };
8987
8988 class OBitmapDither : public Opcode
8989 {
8990 public:
8991 std::string toString() const;
8992 Opcode* clone() const
8993 {
8994 return new OBitmapDither();
8995 }
8996 };
8997
8998 class OBitmapReplColor : public Opcode
8999 {
9000 public:
9001 std::string toString() const;
9002 Opcode* clone() const
9003 {
9004 return new OBitmapReplColor();
9005 }
9006 };
9007
9008 class OBitmapShiftColor : public Opcode
9009 {
9010 public:
9011 std::string toString() const;
9012 Opcode* clone() const
9013 {
9014 return new OBitmapShiftColor();
9015 }
9016 };
9017
9018 class OBitmapMaskDraw : public Opcode
9019 {
9020 public:
9021 std::string toString() const;
9022 Opcode* clone() const
9023 {
9024 return new OBitmapMaskDraw();
9025 }
9026 };
9027
9028 class OBitmapMaskDraw2 : public Opcode
9029 {
9030 public:
9031 std::string toString() const;
9032 Opcode* clone() const
9033 {
9034 return new OBitmapMaskDraw2();
9035 }
9036 };
9037
9038 class OBitmapMaskDraw3 : public Opcode
9039 {
9040 public:
9041 std::string toString() const;
9042 Opcode* clone() const
9043 {
9044 return new OBitmapMaskDraw3();
9045 }
9046 };
9047
9048 class OBitmapMaskBlit : public Opcode
9049 {
9050 public:
9051 std::string toString() const;
9052 Opcode* clone() const
9053 {
9054 return new OBitmapMaskBlit();
9055 }
9056 };
9057
9058 class OBitmapMaskBlit2 : public Opcode
9059 {
9060 public:
9061 std::string toString() const;
9062 Opcode* clone() const
9063 {
9064 return new OBitmapMaskBlit2();
9065 }
9066 };
9067
9068 class OBitmapMaskBlit3 : public Opcode
9069 {
9070 public:
9071 std::string toString() const;
9072 Opcode* clone() const
9073 {
9074 return new OBitmapMaskBlit3();
9075 }
9076 };
9077
9078 class OBMPDrawScreenSolidRegister : public Opcode
9079 {
9080 public:
9081 std::string toString() const;
9082 Opcode* clone() const
9083 {
9084 return new OBMPDrawScreenSolidRegister();
9085 }
9086 };
9087 class OBMPDrawScreenSolid2Register : public Opcode
9088 {
9089 public:
9090 std::string toString() const;
9091 Opcode* clone() const
9092 {
9093 return new OBMPDrawScreenSolid2Register();
9094 }
9095 };
9096 class OBMPDrawScreenComboFRegister : public Opcode
9097 {
9098 public:
9099 std::string toString() const;
9100 Opcode* clone() const
9101 {
9102 return new OBMPDrawScreenComboFRegister();
9103 }
9104 };
9105 class OBMPDrawScreenComboIRegister : public Opcode
9106 {
9107 public:
9108 std::string toString() const;
9109 Opcode* clone() const
9110 {
9111 return new OBMPDrawScreenComboIRegister();
9112 }
9113 };
9114 class OBMPDrawScreenComboTRegister : public Opcode
9115 {
9116 public:
9117 std::string toString() const;
9118 Opcode* clone() const
9119 {
9120 return new OBMPDrawScreenComboTRegister();
9121 }
9122 };
9123
9124 class OBMPDrawScreenSolidityRegister : public Opcode
9125 {
9126 public:
9127 std::string toString() const;
9128 Opcode* clone() const
9129 {
9130 return new OBMPDrawScreenSolidityRegister();
9131 }
9132 };
9133 class OBMPDrawScreenSolidMaskRegister : public Opcode
9134 {
9135 public:
9136 std::string toString() const;
9137 Opcode* clone() const
9138 {
9139 return new OBMPDrawScreenSolidMaskRegister();
9140 }
9141 };
9142 class OBMPDrawScreenCTypeRegister : public Opcode
9143 {
9144 public:
9145 std::string toString() const;
9146 Opcode* clone() const
9147 {
9148 return new OBMPDrawScreenCTypeRegister();
9149 }
9150 };
9151 class OBMPDrawScreenCFlagRegister : public Opcode
9152 {
9153 public:
9154 std::string toString() const;
9155 Opcode* clone() const
9156 {
9157 return new OBMPDrawScreenCFlagRegister();
9158 }
9159 };
9160 class OBMPDrawScreenCIFlagRegister : public Opcode
9161 {
9162 public:
9163 std::string toString() const;
9164 Opcode* clone() const
9165 {
9166 return new OBMPDrawScreenCIFlagRegister();
9167 }
9168 };
9169
9170 //Text ptr opcodes
9171 class OFontHeight : public UnaryOpcode
9172 {
9173 public:
9174 OFontHeight(Argument *A) : UnaryOpcode(A) {}
9175 std::string toString() const;
9176 Opcode* clone() const
9177 {
9178 return new OFontHeight(a->clone());
9179 }
9180 };
9181
9182 class OStringWidth : public BinaryOpcode
9183 {
9184 public:
9185 OStringWidth(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
9186 std::string toString() const;
9187 Opcode* clone() const
9188 {
9189 return new OStringWidth(a->clone(),b->clone());
9190 }
9191 };
9192
9193 class OCharWidth : public BinaryOpcode
9194 {
9195 public:
9196 OCharWidth(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
9197 std::string toString() const;
9198 Opcode* clone() const
9199 {
9200 return new OCharWidth(a->clone(),b->clone());
9201 }
9202 };
9203
9204 class OMessageWidth : public UnaryOpcode
9205 {
9206 public:
9207 OMessageWidth(Argument *A) : UnaryOpcode(A) {}
9208 std::string toString() const;
9209 Opcode* clone() const
9210 {
9211 return new OMessageWidth(a->clone());
9212 }
9213 };
9214
9215 class OMessageHeight : public UnaryOpcode
9216 {
9217 public:
9218 OMessageHeight(Argument *A) : UnaryOpcode(A) {}
9219 std::string toString() const;
9220 Opcode* clone() const
9221 {
9222 return new OMessageHeight(a->clone());
9223 }
9224 };
9225
9226 //
9227 class OStrCmp : public UnaryOpcode
9228 {
9229 public:
9230 OStrCmp(Argument *A) : UnaryOpcode(A) {}
9231 std::string toString() const;
9232 Opcode* clone() const
9233 {
9234 return new OStrCmp(a->clone());
9235 }
9236 };
9237 class OStrNCmp : public UnaryOpcode
9238 {
9239 public:
9240 OStrNCmp(Argument *A) : UnaryOpcode(A) {}
9241 std::string toString() const;
9242 Opcode* clone() const
9243 {
9244 return new OStrNCmp(a->clone());
9245 }
9246 };
9247 class OStrICmp : public UnaryOpcode
9248 {
9249 public:
9250 OStrICmp(Argument *A) : UnaryOpcode(A) {}
9251 std::string toString() const;
9252 Opcode* clone() const
9253 {
9254 return new OStrICmp(a->clone());
9255 }
9256 };
9257 class OStrNICmp : public UnaryOpcode
9258 {
9259 public:
9260 OStrNICmp(Argument *A) : UnaryOpcode(A) {}
9261 std::string toString() const;
9262 Opcode* clone() const
9263 {
9264 return new OStrNICmp(a->clone());
9265 }
9266 };
9267
9268 class Oxlen : public BinaryOpcode
9269 {
9270 public:
9271 Oxlen(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
9272 std::string toString() const;
9273 Opcode* clone() const
9274 {
9275 return new Oxlen(a->clone(), b->clone());
9276 }
9277 };
9278
9279 class Oxtoi : public BinaryOpcode
9280 {
9281 public:
9282 Oxtoi(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
9283 std::string toString() const;
9284 Opcode* clone() const
9285 {
9286 return new Oxtoi(a->clone(), b->clone());
9287 }
9288 };
9289
9290 class Oilen : public BinaryOpcode
9291 {
9292 public:
9293 Oilen(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
9294 std::string toString() const;
9295 Opcode* clone() const
9296 {
9297 return new Oilen(a->clone(), b->clone());
9298 }
9299 };
9300
9301
9302 class Oatoi : public BinaryOpcode
9303 {
9304 public:
9305 Oatoi(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
9306 std::string toString() const;
9307 Opcode* clone() const
9308 {
9309 return new Oatoi(a->clone(), b->clone());
9310 }
9311 };
9312
9313 class Oatol : public BinaryOpcode
9314 {
9315 public:
9316 Oatol(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
9317 std::string toString() const;
9318 Opcode* clone() const
9319 {
9320 return new Oatol(a->clone(), b->clone());
9321 }
9322 };
9323
9324 class Ostrcspn : public UnaryOpcode
9325 {
9326 public:
9327 Ostrcspn(Argument *A) : UnaryOpcode(A) {}
9328 std::string toString() const;
9329 Opcode* clone() const
9330 {
9331 return new Ostrcspn(a->clone());
9332 }
9333 };
9334 class Ostrstr : public UnaryOpcode
9335 {
9336 public:
9337 Ostrstr(Argument *A) : UnaryOpcode(A) {}
9338 std::string toString() const;
9339 Opcode* clone() const
9340 {
9341 return new Ostrstr(a->clone());
9342 }
9343 };
9344
9345
9346 class Oitoa : public BinaryOpcode
9347 {
9348 public:
9349 Oitoa(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
9350 std::string toString() const;
9351 Opcode* clone() const
9352 {
9353 return new Oitoa(a->clone(),b->clone());
9354 }
9355 };
9356
9357 class Oxtoa : public BinaryOpcode
9358 {
9359 public:
9360 Oxtoa(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
9361 std::string toString() const;
9362 Opcode* clone() const
9363 {
9364 return new Oxtoa(a->clone(),b->clone());
9365 }
9366 };
9367
9368 class Oitoacat : public BinaryOpcode
9369 {
9370 public:
9371 Oitoacat(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
9372 std::string toString() const;
9373 Opcode* clone() const
9374 {
9375 return new Oitoacat(a->clone(),b->clone());
9376 }
9377 };
9378
9379 class OSaveGameStructs : public BinaryOpcode
9380 {
9381 public:
9382 OSaveGameStructs(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
9383 std::string toString() const;
9384 Opcode* clone() const
9385 {
9386 return new OSaveGameStructs(a->clone(),b->clone());
9387 }
9388 };
9389 class OReadGameStructs : public BinaryOpcode
9390 {
9391 public:
9392 OReadGameStructs(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
9393 std::string toString() const;
9394 Opcode* clone() const
9395 {
9396 return new OReadGameStructs(a->clone(),b->clone());
9397 }
9398 };
9399 class Ostrcat : public UnaryOpcode
9400 {
9401 public:
9402 Ostrcat(Argument *A) : UnaryOpcode(A) {}
9403 std::string toString() const;
9404 Opcode* clone() const
9405 {
9406 return new Ostrcat(a->clone());
9407 }
9408 };
9409 class Ostrspn : public UnaryOpcode
9410 {
9411 public:
9412 Ostrspn(Argument *A) : UnaryOpcode(A) {}
9413 std::string toString() const;
9414 Opcode* clone() const
9415 {
9416 return new Ostrspn(a->clone());
9417 }
9418 };
9419 class Ostrchr : public UnaryOpcode
9420 {
9421 public:
9422 Ostrchr(Argument *A) : UnaryOpcode(A) {}
9423 std::string toString() const;
9424 Opcode* clone() const
9425 {
9426 return new Ostrchr(a->clone());
9427 }
9428 };
9429 class Ostrrchr : public UnaryOpcode
9430 {
9431 public:
9432 Ostrrchr(Argument *A) : UnaryOpcode(A) {}
9433 std::string toString() const;
9434 Opcode* clone() const
9435 {
9436 return new Ostrrchr(a->clone());
9437 }
9438 };
9439 class Oxlen2 : public UnaryOpcode
9440 {
9441 public:
9442 Oxlen2(Argument *A) : UnaryOpcode(A) {}
9443 std::string toString() const;
9444 Opcode* clone() const
9445 {
9446 return new Oxlen2(a->clone());
9447 }
9448 };
9449 class Oxtoi2 : public UnaryOpcode
9450 {
9451 public:
9452 Oxtoi2(Argument *A) : UnaryOpcode(A) {}
9453 std::string toString() const;
9454 Opcode* clone() const
9455 {
9456 return new Oxtoi2(a->clone());
9457 }
9458 };
9459 class Oilen2 : public UnaryOpcode
9460 {
9461 public:
9462 Oilen2(Argument *A) : UnaryOpcode(A) {}
9463 std::string toString() const;
9464 Opcode* clone() const
9465 {
9466 return new Oilen2(a->clone());
9467 }
9468 };
9469 class Oatoi2 : public UnaryOpcode
9470 {
9471 public:
9472 Oatoi2(Argument *A) : UnaryOpcode(A) {}
9473 std::string toString() const;
9474 Opcode* clone() const
9475 {
9476 return new Oatoi2(a->clone());
9477 }
9478 };
9479 class Oremchr2 : public UnaryOpcode
9480 {
9481 public:
9482 Oremchr2(Argument *A) : UnaryOpcode(A) {}
9483 std::string toString() const;
9484 Opcode* clone() const
9485 {
9486 return new Oremchr2(a->clone());
9487 }
9488 };
9489
9490
9491 class Ouppertolower : public BinaryOpcode
9492 {
9493 public:
9494 Ouppertolower(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
9495 std::string toString() const;
9496 Opcode* clone() const
9497 {
9498 return new Ouppertolower(a->clone(), b->clone());
9499 }
9500 };
9501
9502 class Olowertoupper : public BinaryOpcode
9503 {
9504 public:
9505 Olowertoupper(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
9506 std::string toString() const;
9507 Opcode* clone() const
9508 {
9509 return new Olowertoupper(a->clone(), b->clone());
9510 }
9511 };
9512
9513 class Oconvertcase : public BinaryOpcode
9514 {
9515 public:
9516 Oconvertcase(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
9517 std::string toString() const;
9518 Opcode* clone() const
9519 {
9520 return new Oconvertcase(a->clone(), b->clone());
9521 }
9522 };
9523
9524
9525 //Game->Getthingbystring
9526 class OGETNPCSCRIPT : public UnaryOpcode
9527 {
9528 public:
9529 OGETNPCSCRIPT(Argument *A) : UnaryOpcode(A) {}
9530 std::string toString() const;
9531 Opcode* clone() const
9532 {
9533 return new OGETNPCSCRIPT(a->clone());
9534 }
9535 };
9536 class OGETLWEAPONSCRIPT : public UnaryOpcode
9537 {
9538 public:
9539 OGETLWEAPONSCRIPT(Argument *A) : UnaryOpcode(A) {}
9540 std::string toString() const;
9541 Opcode* clone() const
9542 {
9543 return new OGETLWEAPONSCRIPT(a->clone());
9544 }
9545 };
9546 class OGETEWEAPONSCRIPT : public UnaryOpcode
9547 {
9548 public:
9549 OGETEWEAPONSCRIPT(Argument *A) : UnaryOpcode(A) {}
9550 std::string toString() const;
9551 Opcode* clone() const
9552 {
9553 return new OGETEWEAPONSCRIPT(a->clone());
9554 }
9555 };
9556 class OGETGENERICSCRIPT : public UnaryOpcode
9557 {
9558 public:
9559 OGETGENERICSCRIPT(Argument *A) : UnaryOpcode(A) {}
9560 std::string toString() const;
9561 Opcode* clone() const
9562 {
9563 return new OGETGENERICSCRIPT(a->clone());
9564 }
9565 };
9566 class OGETHEROSCRIPT : public UnaryOpcode
9567 {
9568 public:
9569 OGETHEROSCRIPT(Argument *A) : UnaryOpcode(A) {}
9570 std::string toString() const;
9571 Opcode* clone() const
9572 {
9573 return new OGETHEROSCRIPT(a->clone());
9574 }
9575 };
9576 class OGETGLOBALSCRIPT : public UnaryOpcode
9577 {
9578 public:
9579 OGETGLOBALSCRIPT(Argument *A) : UnaryOpcode(A) {}
9580 std::string toString() const;
9581 Opcode* clone() const
9582 {
9583 return new OGETGLOBALSCRIPT(a->clone());
9584 }
9585 };
9586 class OGETDMAPSCRIPT : public UnaryOpcode
9587 {
9588 public:
9589 OGETDMAPSCRIPT(Argument *A) : UnaryOpcode(A) {}
9590 std::string toString() const;
9591 Opcode* clone() const
9592 {
9593 return new OGETDMAPSCRIPT(a->clone());
9594 }
9595 };
9596 class OGETSCREENSCRIPT : public UnaryOpcode
9597 {
9598 public:
9599 OGETSCREENSCRIPT(Argument *A) : UnaryOpcode(A) {}
9600 std::string toString() const;
9601 Opcode* clone() const
9602 {
9603 return new OGETSCREENSCRIPT(a->clone());
9604 }
9605 };
9606 class OGETSPRITESCRIPT : public UnaryOpcode
9607 {
9608 public:
9609 OGETSPRITESCRIPT(Argument *A) : UnaryOpcode(A) {}
9610 std::string toString() const;
9611 Opcode* clone() const
9612 {
9613 return new OGETSPRITESCRIPT(a->clone());
9614 }
9615 };
9616 class OGETUNTYPEDSCRIPT : public UnaryOpcode
9617 {
9618 public:
9619 OGETUNTYPEDSCRIPT(Argument *A) : UnaryOpcode(A) {}
9620 std::string toString() const;
9621 Opcode* clone() const
9622 {
9623 return new OGETUNTYPEDSCRIPT(a->clone());
9624 }
9625 };
9626 class OGETSUBSCREENSCRIPT : public UnaryOpcode
9627 {
9628 public:
9629 OGETSUBSCREENSCRIPT(Argument *A) : UnaryOpcode(A) {}
9630 std::string toString() const;
9631 Opcode* clone() const
9632 {
9633 return new OGETSUBSCREENSCRIPT(a->clone());
9634 }
9635 };
9636 class OGETNPCBYNAME : public UnaryOpcode
9637 {
9638 public:
9639 OGETNPCBYNAME(Argument *A) : UnaryOpcode(A) {}
9640 std::string toString() const;
9641 Opcode* clone() const
9642 {
9643 return new OGETNPCBYNAME(a->clone());
9644 }
9645 };
9646 class OGETITEMBYNAME : public UnaryOpcode
9647 {
9648 public:
9649 OGETITEMBYNAME(Argument *A) : UnaryOpcode(A) {}
9650 std::string toString() const;
9651 Opcode* clone() const
9652 {
9653 return new OGETITEMBYNAME(a->clone());
9654 }
9655 };
9656 class OGETCOMBOBYNAME : public UnaryOpcode
9657 {
9658 public:
9659 OGETCOMBOBYNAME(Argument *A) : UnaryOpcode(A) {}
9660 std::string toString() const;
9661 Opcode* clone() const
9662 {
9663 return new OGETCOMBOBYNAME(a->clone());
9664 }
9665 };
9666 class OGETDMAPBYNAME : public UnaryOpcode
9667 {
9668 public:
9669 OGETDMAPBYNAME(Argument *A) : UnaryOpcode(A) {}
9670 std::string toString() const;
9671 Opcode* clone() const
9672 {
9673 return new OGETDMAPBYNAME(a->clone());
9674 }
9675 };
9676
9677 class OLoadNPCBySUIDRegister : public UnaryOpcode
9678 {
9679 public:
9680 OLoadNPCBySUIDRegister(Argument *A) : UnaryOpcode(A) {}
9681 std::string toString() const;
9682 Opcode* clone() const
9683 {
9684 return new OLoadNPCBySUIDRegister(a->clone());
9685 }
9686 };
9687
9688 class OLoadLWeaponBySUIDRegister : public UnaryOpcode
9689 {
9690 public:
9691 OLoadLWeaponBySUIDRegister(Argument *A) : UnaryOpcode(A) {}
9692 std::string toString() const;
9693 Opcode* clone() const
9694 {
9695 return new OLoadLWeaponBySUIDRegister(a->clone());
9696 }
9697 };
9698
9699 class OLoadEWeaponBySUIDRegister : public UnaryOpcode
9700 {
9701 public:
9702 OLoadEWeaponBySUIDRegister(Argument *A) : UnaryOpcode(A) {}
9703 std::string toString() const;
9704 Opcode* clone() const
9705 {
9706 return new OLoadEWeaponBySUIDRegister(a->clone());
9707 }
9708 };
9709
9710 class OByte : public UnaryOpcode
9711 {
9712 public:
9713 OByte(Argument *A) : UnaryOpcode(A) {}
9714 std::string toString() const;
9715 Opcode* clone() const
9716 {
9717 return new OByte(a->clone());
9718 }
9719 };
9720
9721 class OCeiling : public UnaryOpcode
9722 {
9723 public:
9724 OCeiling(Argument *A) : UnaryOpcode(A) {}
9725 std::string toString() const;
9726 Opcode* clone() const
9727 {
9728 return new OCeiling(a->clone());
9729 }
9730 };
9731
9732 class OFloor : public UnaryOpcode
9733 {
9734 public:
9735 OFloor(Argument *A) : UnaryOpcode(A) {}
9736 std::string toString() const;
9737 Opcode* clone() const
9738 {
9739 return new OFloor(a->clone());
9740 }
9741 };
9742
9743 class OTruncate : public UnaryOpcode
9744 {
9745 public:
9746 OTruncate(Argument *A) : UnaryOpcode(A) {}
9747 std::string toString() const;
9748 Opcode* clone() const
9749 {
9750 return new OTruncate(a->clone());
9751 }
9752 };
9753
9754 class ORound : public UnaryOpcode
9755 {
9756 public:
9757 ORound(Argument *A) : UnaryOpcode(A) {}
9758 std::string toString() const;
9759 Opcode* clone() const
9760 {
9761 return new ORound(a->clone());
9762 }
9763 };
9764
9765 class ORoundAway : public UnaryOpcode
9766 {
9767 public:
9768 ORoundAway(Argument *A) : UnaryOpcode(A) {}
9769 std::string toString() const;
9770 Opcode* clone() const
9771 {
9772 return new ORoundAway(a->clone());
9773 }
9774 };
9775
9776 class OToInteger : public UnaryOpcode
9777 {
9778 public:
9779 OToInteger(Argument *A) : UnaryOpcode(A) {}
9780 std::string toString() const;
9781 Opcode* clone() const
9782 {
9783 return new OToInteger(a->clone());
9784 }
9785 };
9786
9787 class OWord : public UnaryOpcode
9788 {
9789 public:
9790 OWord(Argument *A) : UnaryOpcode(A) {}
9791 std::string toString() const;
9792 Opcode* clone() const
9793 {
9794 return new OWord(a->clone());
9795 }
9796 };
9797
9798 class OShort : public UnaryOpcode
9799 {
9800 public:
9801 OShort(Argument *A) : UnaryOpcode(A) {}
9802 std::string toString() const;
9803 Opcode* clone() const
9804 {
9805 return new OShort(a->clone());
9806 }
9807 };
9808
9809
9810 class OSByte : public UnaryOpcode
9811 {
9812 public:
9813 OSByte(Argument *A) : UnaryOpcode(A) {}
9814 std::string toString() const;
9815 Opcode* clone() const
9816 {
9817 return new OSByte(a->clone());
9818 }
9819 };
9820
9821 class OReturn : public Opcode
9822 {
9823 public:
9824 std::string toString() const;
9825 OReturn* clone() const
9826 {
9827 return new OReturn();
9828 }
9829 };
9830
9831 class OGraphicsGetpixel : public UnaryOpcode
9832 {
9833 public:
9834 OGraphicsGetpixel(Argument *A) : UnaryOpcode(A) {}
9835 std::string toString() const;
9836 Opcode* clone() const
9837 {
9838 return new OGraphicsGetpixel(a->clone());
9839 }
9840 };
9841
9842 class OGraphicsCountColor : public UnaryOpcode
9843 {
9844 public:
9845 OGraphicsCountColor(Argument *A) : UnaryOpcode(A) {}
9846 std::string toString() const;
9847 Opcode* clone() const
9848 {
9849 return new OGraphicsCountColor(a->clone());
9850 }
9851 };
9852
9853 class ODirExists : public UnaryOpcode
9854 {
9855 public:
9856 ODirExists(Argument *A) : UnaryOpcode(A) {}
9857 std::string toString() const;
9858 Opcode* clone() const
9859 {
9860 return new ODirExists(a->clone());
9861 }
9862 };
9863
9864 class OFileExists : public UnaryOpcode
9865 {
9866 public:
9867 OFileExists(Argument *A) : UnaryOpcode(A) {}
9868 std::string toString() const;
9869 Opcode* clone() const
9870 {
9871 return new OFileExists(a->clone());
9872 }
9873 };
9874
9875 class OFileSystemRemove : public UnaryOpcode
9876 {
9877 public:
9878 OFileSystemRemove(Argument *A) : UnaryOpcode(A) {}
9879 std::string toString() const;
9880 Opcode* clone() const
9881 {
9882 return new OFileSystemRemove(a->clone());
9883 }
9884 };
9885
9886 class OFileClose : public Opcode
9887 {
9888 public:
9889 std::string toString() const;
9890 Opcode* clone() const
9891 {
9892 return new OFileClose();
9893 }
9894 };
9895
9896 class OFileFree : public Opcode
9897 {
9898 public:
9899 std::string toString() const;
9900 Opcode* clone() const
9901 {
9902 return new OFileFree();
9903 }
9904 };
9905
9906 class OFileIsAllocated : public Opcode
9907 {
9908 public:
9909 std::string toString() const;
9910 Opcode* clone() const
9911 {
9912 return new OFileIsAllocated();
9913 }
9914 };
9915
9916 class OFileIsValid : public Opcode
9917 {
9918 public:
9919 std::string toString() const;
9920 Opcode* clone() const
9921 {
9922 return new OFileIsValid();
9923 }
9924 };
9925
9926 class OAllocateFile : public Opcode
9927 {
9928 public:
9929 std::string toString() const;
9930 Opcode* clone() const
9931 {
9932 return new OAllocateFile();
9933 }
9934 };
9935
9936 class OFileFlush : public Opcode
9937 {
9938 public:
9939 std::string toString() const;
9940 Opcode* clone() const
9941 {
9942 return new OFileFlush();
9943 }
9944 };
9945
9946 class OFileGetChar : public Opcode
9947 {
9948 public:
9949 std::string toString() const;
9950 Opcode* clone() const
9951 {
9952 return new OFileGetChar();
9953 }
9954 };
9955
9956 class OFileRewind : public Opcode
9957 {
9958 public:
9959 std::string toString() const;
9960 Opcode* clone() const
9961 {
9962 return new OFileRewind();
9963 }
9964 };
9965
9966 class OFileClearError : public Opcode
9967 {
9968 public:
9969 std::string toString() const;
9970 Opcode* clone() const
9971 {
9972 return new OFileClearError();
9973 }
9974 };
9975
9976 class OFileOpen : public UnaryOpcode
9977 {
9978 public:
9979 OFileOpen(Argument *A) : UnaryOpcode(A) {}
9980 std::string toString() const;
9981 Opcode* clone() const
9982 {
9983 return new OFileOpen(a->clone());
9984 }
9985 };
9986
9987 class OFileCreate : public UnaryOpcode
9988 {
9989 public:
9990 OFileCreate(Argument *A) : UnaryOpcode(A) {}
9991 std::string toString() const;
9992 Opcode* clone() const
9993 {
9994 return new OFileCreate(a->clone());
9995 }
9996 };
9997
9998 class OFileReadString : public UnaryOpcode
9999 {
10000 public:
10001 OFileReadString(Argument *A) : UnaryOpcode(A) {}
10002 std::string toString() const;
10003 Opcode* clone() const
10004 {
10005 return new OFileReadString(a->clone());
10006 }
10007 };
10008
10009 class OFileWriteString : public UnaryOpcode
10010 {
10011 public:
10012 OFileWriteString(Argument *A) : UnaryOpcode(A) {}
10013 std::string toString() const;
10014 Opcode* clone() const
10015 {
10016 return new OFileWriteString(a->clone());
10017 }
10018 };
10019
10020 class OFilePutChar : public UnaryOpcode
10021 {
10022 public:
10023 OFilePutChar(Argument *A) : UnaryOpcode(A) {}
10024 std::string toString() const;
10025 Opcode* clone() const
10026 {
10027 return new OFilePutChar(a->clone());
10028 }
10029 };
10030
10031 class OFileUngetChar : public UnaryOpcode
10032 {
10033 public:
10034 OFileUngetChar(Argument *A) : UnaryOpcode(A) {}
10035 std::string toString() const;
10036 Opcode* clone() const
10037 {
10038 return new OFileUngetChar(a->clone());
10039 }
10040 };
10041
10042 class OFileGetError : public UnaryOpcode
10043 {
10044 public:
10045 OFileGetError(Argument *A) : UnaryOpcode(A) {}
10046 std::string toString() const;
10047 Opcode* clone() const
10048 {
10049 return new OFileGetError(a->clone());
10050 }
10051 };
10052
10053 class OFileRemove : public Opcode
10054 {
10055 public:
10056 std::string toString() const;
10057 Opcode* clone() const
10058 {
10059 return new OFileRemove();
10060 }
10061 };
10062
10063 class OFileReadChars : public BinaryOpcode
10064 {
10065 public:
10066 OFileReadChars(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
10067 std::string toString() const;
10068 Opcode* clone() const
10069 {
10070 return new OFileReadChars(a->clone(), b->clone());
10071 }
10072 };
10073
10074 class OFileReadBytes : public BinaryOpcode
10075 {
10076 public:
10077 OFileReadBytes(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
10078 std::string toString() const;
10079 Opcode* clone() const
10080 {
10081 return new OFileReadBytes(a->clone(), b->clone());
10082 }
10083 };
10084
10085 class OFileReadInts : public BinaryOpcode
10086 {
10087 public:
10088 OFileReadInts(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
10089 std::string toString() const;
10090 Opcode* clone() const
10091 {
10092 return new OFileReadInts(a->clone(), b->clone());
10093 }
10094 };
10095
10096 class OFileWriteChars : public BinaryOpcode
10097 {
10098 public:
10099 OFileWriteChars(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
10100 std::string toString() const;
10101 Opcode* clone() const
10102 {
10103 return new OFileWriteChars(a->clone(), b->clone());
10104 }
10105 };
10106
10107 class OFileWriteBytes : public BinaryOpcode
10108 {
10109 public:
10110 OFileWriteBytes(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
10111 std::string toString() const;
10112 Opcode* clone() const
10113 {
10114 return new OFileWriteBytes(a->clone(), b->clone());
10115 }
10116 };
10117
10118 class OFileWriteInts : public BinaryOpcode
10119 {
10120 public:
10121 OFileWriteInts(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
10122 std::string toString() const;
10123 Opcode* clone() const
10124 {
10125 return new OFileWriteInts(a->clone(), b->clone());
10126 }
10127 };
10128
10129 class OFileSeek : public BinaryOpcode
10130 {
10131 public:
10132 OFileSeek(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
10133 std::string toString() const;
10134 Opcode* clone() const
10135 {
10136 return new OFileSeek(a->clone(), b->clone());
10137 }
10138 };
10139
10140 class OFileOpenMode : public BinaryOpcode
10141 {
10142 public:
10143 OFileOpenMode(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
10144 std::string toString() const;
10145 Opcode* clone() const
10146 {
10147 return new OFileOpenMode(a->clone(), b->clone());
10148 }
10149 };
10150
10151 class ODirectoryGet : public BinaryOpcode
10152 {
10153 public:
10154 ODirectoryGet(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
10155 std::string toString() const;
10156 Opcode* clone() const
10157 {
10158 return new ODirectoryGet(a->clone(), b->clone());
10159 }
10160 };
10161
10162 class ODirectoryReload : public Opcode
10163 {
10164 public:
10165 std::string toString() const;
10166 Opcode* clone() const
10167 {
10168 return new ODirectoryReload();
10169 }
10170 };
10171
10172 class ODirectoryFree : public Opcode
10173 {
10174 public:
10175 std::string toString() const;
10176 Opcode* clone() const
10177 {
10178 return new ODirectoryFree();
10179 }
10180 };
10181
10182 class OStackFree : public Opcode
10183 {
10184 public:
10185 std::string toString() const;
10186 Opcode* clone() const
10187 {
10188 return new OStackFree();
10189 }
10190 };
10191 class OStackOwn : public Opcode
10192 {
10193 public:
10194 std::string toString() const;
10195 Opcode* clone() const
10196 {
10197 return new OStackOwn();
10198 }
10199 };
10200 class OStackClear : public Opcode
10201 {
10202 public:
10203 std::string toString() const;
10204 Opcode* clone() const
10205 {
10206 return new OStackClear();
10207 }
10208 };
10209
10210 class OStackPopBack : public UnaryOpcode
10211 {
10212 public:
10213 OStackPopBack(Argument *A) : UnaryOpcode(A) {}
10214 std::string toString() const;
10215 Opcode* clone() const
10216 {
10217 return new OStackPopBack(a->clone());
10218 }
10219 };
10220 class OStackPopFront : public UnaryOpcode
10221 {
10222 public:
10223 OStackPopFront(Argument *A) : UnaryOpcode(A) {}
10224 std::string toString() const;
10225 Opcode* clone() const
10226 {
10227 return new OStackPopFront(a->clone());
10228 }
10229 };
10230 class OStackPeekBack : public UnaryOpcode
10231 {
10232 public:
10233 OStackPeekBack(Argument *A) : UnaryOpcode(A) {}
10234 std::string toString() const;
10235 Opcode* clone() const
10236 {
10237 return new OStackPeekBack(a->clone());
10238 }
10239 };
10240 class OStackPeekFront : public UnaryOpcode
10241 {
10242 public:
10243 OStackPeekFront(Argument *A) : UnaryOpcode(A) {}
10244 std::string toString() const;
10245 Opcode* clone() const
10246 {
10247 return new OStackPeekFront(a->clone());
10248 }
10249 };
10250 class OStackPushBack : public UnaryOpcode
10251 {
10252 public:
10253 OStackPushBack(Argument *A) : UnaryOpcode(A) {}
10254 std::string toString() const;
10255 Opcode* clone() const
10256 {
10257 return new OStackPushBack(a->clone());
10258 }
10259 };
10260 class OStackPushFront : public UnaryOpcode
10261 {
10262 public:
10263 OStackPushFront(Argument *A) : UnaryOpcode(A) {}
10264 std::string toString() const;
10265 Opcode* clone() const
10266 {
10267 return new OStackPushFront(a->clone());
10268 }
10269 };
10270 class OStackGet : public UnaryOpcode
10271 {
10272 public:
10273 OStackGet(Argument *A) : UnaryOpcode(A) {}
10274 std::string toString() const;
10275 Opcode* clone() const
10276 {
10277 return new OStackGet(a->clone());
10278 }
10279 };
10280 class OStackSet : public BinaryOpcode
10281 {
10282 public:
10283 OStackSet(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
10284 std::string toString() const;
10285 Opcode* clone() const
10286 {
10287 return new OStackSet(a->clone(), b->clone());
10288 }
10289 };
10290
10291 class OModuleGetIC : public BinaryOpcode
10292 {
10293 public:
10294 OModuleGetIC(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
10295 std::string toString() const;
10296 Opcode* clone() const
10297 {
10298 return new OModuleGetIC(a->clone(), b->clone());
10299 }
10300 };
10301 class OGetScreenForComboPos : public UnaryOpcode
10302 {
10303 public:
10304 OGetScreenForComboPos(Argument *A) : UnaryOpcode(A) {}
10305 std::string toString() const;
10306 Opcode *clone() const
10307 {
10308 return new OGetScreenForComboPos(a->clone());
10309 }
10310 };
10311 class ORunGenericFrozenScript : public UnaryOpcode
10312 {
10313 public:
10314 ORunGenericFrozenScript(Argument *A) : UnaryOpcode(A) {}
10315 std::string toString() const;
10316 Opcode* clone() const
10317 {
10318 return new ORunGenericFrozenScript(a->clone());
10319 }
10320 };
10321 class OPalDataFree : public Opcode
10322 {
10323 public:
10324 std::string toString() const;
10325 Opcode* clone() const
10326 {
10327 return new OPalDataFree();
10328 }
10329 };
10330 class OPalDataOwn : public Opcode
10331 {
10332 public:
10333 std::string toString() const;
10334 Opcode* clone() const
10335 {
10336 return new OPalDataOwn();
10337 }
10338 };
10339
10340 class OReservedZ3_01 : public BinaryOpcode
10341 {
10342 public:
10343 OReservedZ3_01(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
10344 std::string toString() const;
10345 Opcode* clone() const
10346 {
10347 return new OReservedZ3_01(a->clone(),b->clone());
10348 }
10349 };
10350
10351 class OReservedZ3_02 : public BinaryOpcode
10352 {
10353 public:
10354 OReservedZ3_02(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
10355 std::string toString() const;
10356 Opcode* clone() const
10357 {
10358 return new OReservedZ3_02(a->clone(),b->clone());
10359 }
10360 };
10361
10362 class OReservedZ3_03 : public BinaryOpcode
10363 {
10364 public:
10365 OReservedZ3_03(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
10366 std::string toString() const;
10367 Opcode* clone() const
10368 {
10369 return new OReservedZ3_03(a->clone(),b->clone());
10370 }
10371 };
10372
10373 class OReservedZ3_04 : public BinaryOpcode
10374 {
10375 public:
10376 OReservedZ3_04(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
10377 std::string toString() const;
10378 Opcode* clone() const
10379 {
10380 return new OReservedZ3_04(a->clone(),b->clone());
10381 }
10382 };
10383
10384 class OReservedZ3_05 : public BinaryOpcode
10385 {
10386 public:
10387 OReservedZ3_05(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
10388 std::string toString() const;
10389 Opcode* clone() const
10390 {
10391 return new OReservedZ3_05(a->clone(),b->clone());
10392 }
10393 };
10394
10395 class OReservedZ3_06 : public BinaryOpcode
10396 {
10397 public:
10398 OReservedZ3_06(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
10399 std::string toString() const;
10400 Opcode* clone() const
10401 {
10402 return new OReservedZ3_06(a->clone(),b->clone());
10403 }
10404 };
10405
10406 class OReservedZ3_07 : public BinaryOpcode
10407 {
10408 public:
10409 OReservedZ3_07(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
10410 std::string toString() const;
10411 Opcode* clone() const
10412 {
10413 return new OReservedZ3_07(a->clone(),b->clone());
10414 }
10415 };
10416
10417 class OReservedZ3_08 : public BinaryOpcode
10418 {
10419 public:
10420 OReservedZ3_08(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
10421 std::string toString() const;
10422 Opcode* clone() const
10423 {
10424 return new OReservedZ3_08(a->clone(),b->clone());
10425 }
10426 };
10427
10428 class OReservedZ3_09 : public BinaryOpcode
10429 {
10430 public:
10431 OReservedZ3_09(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
10432 std::string toString() const;
10433 Opcode* clone() const
10434 {
10435 return new OReservedZ3_09(a->clone(),b->clone());
10436 }
10437 };
10438
10439 class OReservedZ3_10 : public BinaryOpcode
10440 {
10441 public:
10442 OReservedZ3_10(Argument *A, Argument *B) : BinaryOpcode(A,B) {}
10443 std::string toString() const;
10444 Opcode* clone() const
10445 {
10446 return new OReservedZ3_10(a->clone(),b->clone());
10447 }
10448 };
10449
10450
10451
10452 class OSubscrSwapPages : public Opcode
10453 {
10454 public:
10455 std::string toString() const;
10456 Opcode* clone() const
10457 {
10458 return new OSubscrSwapPages();
10459 }
10460 };
10461
10462 class OSubscrPgFindWidget : public Opcode
10463 {
10464 public:
10465 std::string toString() const;
10466 Opcode* clone() const
10467 {
10468 return new OSubscrPgFindWidget();
10469 }
10470 };
10471
10472 class OSubscrPgMvCursor : public Opcode
10473 {
10474 public:
10475 std::string toString() const;
10476 Opcode* clone() const
10477 {
10478 return new OSubscrPgMvCursor();
10479 }
10480 };
10481
10482 class OSubscrPgSwapWidgets : public Opcode
10483 {
10484 public:
10485 std::string toString() const;
10486 Opcode* clone() const
10487 {
10488 return new OSubscrPgSwapWidgets();
10489 }
10490 };
10491
10492 class OSubscrPgNewWidget : public Opcode
10493 {
10494 public:
10495 std::string toString() const;
10496 Opcode* clone() const
10497 {
10498 return new OSubscrPgNewWidget();
10499 }
10500 };
10501
10502 class OSubscrPgDelete : public Opcode
10503 {
10504 public:
10505 std::string toString() const;
10506 Opcode* clone() const
10507 {
10508 return new OSubscrPgDelete();
10509 }
10510 };
10511
10512 class OGetSubWidgSelTxtOverride : public UnaryOpcode
10513 {
10514 public:
10515 OGetSubWidgSelTxtOverride(Argument *A) : UnaryOpcode(A) {}
10516 std::string toString() const;
10517 Opcode* clone() const
10518 {
10519 return new OGetSubWidgSelTxtOverride(a->clone());
10520 }
10521 };
10522
10523 class OSetSubWidgSelTxtOverride : public UnaryOpcode
10524 {
10525 public:
10526 OSetSubWidgSelTxtOverride(Argument *A) : UnaryOpcode(A) {}
10527 std::string toString() const;
10528 Opcode* clone() const
10529 {
10530 return new OSetSubWidgSelTxtOverride(a->clone());
10531 }
10532 };
10533
10534 class OSubWidgTy_GetText : public UnaryOpcode
10535 {
10536 public:
10537 OSubWidgTy_GetText(Argument *A) : UnaryOpcode(A) {}
10538 std::string toString() const;
10539 Opcode* clone() const
10540 {
10541 return new OSubWidgTy_GetText(a->clone());
10542 }
10543 };
10544
10545 class OSubWidgTy_SetText : public UnaryOpcode
10546 {
10547 public:
10548 OSubWidgTy_SetText(Argument *A) : UnaryOpcode(A) {}
10549 std::string toString() const;
10550 Opcode* clone() const
10551 {
10552 return new OSubWidgTy_SetText(a->clone());
10553 }
10554 };
10555
10556
10557
10558 class OSubscrPgFindWidgetLbl : public Opcode
10559 {
10560 public:
10561 std::string toString() const;
10562 Opcode* clone() const
10563 {
10564 return new OSubscrPgFindWidgetLbl();
10565 }
10566 };
10567
10568
10569
10570 class OGetSubWidgLabel : public UnaryOpcode
10571 {
10572 public:
10573 OGetSubWidgLabel(Argument *A) : UnaryOpcode(A) {}
10574 std::string toString() const;
10575 Opcode* clone() const
10576 {
10577 return new OGetSubWidgLabel(a->clone());
10578 }
10579 };
10580
10581 class OSetSubWidgLabel : public UnaryOpcode
10582 {
10583 public:
10584 OSetSubWidgLabel(Argument *A) : UnaryOpcode(A) {}
10585 std::string toString() const;
10586 Opcode* clone() const
10587 {
10588 return new OSetSubWidgLabel(a->clone());
10589 }
10590 };
10591
10592
10593
10594 class OWrapRadians : public UnaryOpcode
10595 {
10596 public:
10597 OWrapRadians(Argument *A) : UnaryOpcode(A) {}
10598 std::string toString() const;
10599 Opcode* clone() const
10600 {
10601 return new OWrapRadians(a->clone());
10602 }
10603 };
10604
10605 class OWrapDegrees : public UnaryOpcode
10606 {
10607 public:
10608 OWrapDegrees(Argument *A) : UnaryOpcode(A) {}
10609 std::string toString() const;
10610 Opcode* clone() const
10611 {
10612 return new OWrapDegrees(a->clone());
10613 }
10614 };
10615
10616
10617
10618 class OCallFunc : public UnaryOpcode
10619 {
10620 public:
10621 10116 OCallFunc(Argument *A) : UnaryOpcode(A) {}
10622 std::string toString() const;
10623 997 Opcode* clone() const
10624 {
10625
2/4
✓ Branch 0 taken 997 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 997 times.
✗ Branch 3 not taken.
997 return new OCallFunc(a->clone());
10626 }
10627 };
10628
10629 class OReturnFunc : public Opcode
10630 {
10631 public:
10632 std::string toString() const;
10633 316 Opcode* clone() const
10634 {
10635
1/2
✓ Branch 0 taken 316 times.
✗ Branch 1 not taken.
316 return new OReturnFunc();
10636 }
10637 };
10638
10639
10640
10641 class OSetCompare : public BinaryOpcode
10642 {
10643 public:
10644 16695 OSetCompare(Argument *A, Argument* B) : BinaryOpcode(A,B) {}
10645 std::string toString() const;
10646 801 Opcode* clone() const
10647 {
10648
3/6
✓ Branch 0 taken 801 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 801 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 801 times.
✗ Branch 5 not taken.
801 return new OSetCompare(a->clone(),b->clone());
10649 }
10650 };
10651
10652 class OGotoCompare : public BinaryOpcode
10653 {
10654 public:
10655 10973 OGotoCompare(Argument *A, Argument* B) : BinaryOpcode(A,B) {}
10656 std::string toString() const;
10657 378 Opcode* clone() const
10658 {
10659
3/6
✓ Branch 0 taken 378 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 378 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 378 times.
✗ Branch 5 not taken.
378 return new OGotoCompare(a->clone(),b->clone());
10660 }
10661 };
10662
10663
10664
10665 class OStackWriteAtRV : public BinaryOpcode
10666 {
10667 public:
10668 OStackWriteAtRV(Argument *A, Argument* B) : BinaryOpcode(A,B) {}
10669 std::string toString() const;
10670 Opcode* clone() const
10671 {
10672 return new OStackWriteAtRV(a->clone(),b->clone());
10673 }
10674 };
10675
10676 class OStackWriteAtVV : public BinaryOpcode
10677 {
10678 public:
10679 OStackWriteAtVV(Argument *A, Argument* B) : BinaryOpcode(A,B) {}
10680 std::string toString() const;
10681 Opcode* clone() const
10682 {
10683 return new OStackWriteAtVV(a->clone(),b->clone());
10684 }
10685 };
10686
10687
10688
10689 class OStackWriteAtVV_If : public TernaryOpcode
10690 {
10691 public:
10692 OStackWriteAtVV_If(Argument *A, Argument* B, Argument* C) : TernaryOpcode(A,B,C) {}
10693 std::string toString() const;
10694 Opcode* clone() const
10695 {
10696 return new OStackWriteAtVV_If(a->clone(),b->clone(),c->clone());
10697 }
10698 };
10699
10700 class OLoadWebSocket : public UnaryOpcode
10701 {
10702 public:
10703 OLoadWebSocket(Argument *A) : UnaryOpcode(A) {}
10704 std::string toString() const;
10705 Opcode* clone() const
10706 {
10707 return new OLoadWebSocket(a->clone());
10708 }
10709 };
10710
10711 class OWebSocketFree : public Opcode
10712 {
10713 public:
10714 std::string toString() const;
10715 Opcode* clone() const
10716 {
10717 return new OWebSocketFree();
10718 }
10719 };
10720
10721 class OWebSocketOwn : public Opcode
10722 {
10723 public:
10724 std::string toString() const;
10725 Opcode* clone() const
10726 {
10727 return new OWebSocketOwn();
10728 }
10729 };
10730
10731 class OWebSocketGetError : public UnaryOpcode
10732 {
10733 public:
10734 OWebSocketGetError(Argument *A) : UnaryOpcode(A) {}
10735 std::string toString() const;
10736 Opcode* clone() const
10737 {
10738 return new OWebSocketGetError(a->clone());
10739 }
10740 };
10741
10742 class OWebSocketSend : public BinaryOpcode
10743 {
10744 public:
10745 OWebSocketSend(Argument *A, Argument *B) : BinaryOpcode(A, B) {}
10746 std::string toString() const;
10747 Opcode* clone() const
10748 {
10749 return new OWebSocketSend(a->clone(), b->clone());
10750 }
10751 };
10752
10753 class OWebSocketReceive : public UnaryOpcode
10754 {
10755 public:
10756 OWebSocketReceive(Argument *A) : UnaryOpcode(A) {}
10757 std::string toString() const;
10758 Opcode* clone() const
10759 {
10760 return new OWebSocketReceive(a->clone());
10761 }
10762 };
10763
10764 class OGC : public Opcode
10765 {
10766 public:
10767 OGC() : Opcode() {}
10768 std::string toString() const;
10769 Opcode* clone() const
10770 {
10771 return new OGC();
10772 }
10773 };
10774
10775 class ORefInc : public UnaryOpcode
10776 {
10777 public:
10778 8 ORefInc(Argument *A) : UnaryOpcode(A) {}
10779 std::string toString() const;
10780 3 Opcode* clone() const
10781 {
10782
2/4
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
3 return new ORefInc(a->clone());
10783 }
10784 };
10785
10786 class ORefDec : public UnaryOpcode
10787 {
10788 public:
10789 ORefDec(Argument *A) : UnaryOpcode(A) {}
10790 std::string toString() const;
10791 Opcode* clone() const
10792 {
10793 return new ORefDec(a->clone());
10794 }
10795 };
10796
10797 class ORefAutorelease : public UnaryOpcode
10798 {
10799 public:
10800 10 ORefAutorelease(Argument *A) : UnaryOpcode(A) {}
10801 std::string toString() const;
10802 4 Opcode* clone() const
10803 {
10804
2/4
✓ Branch 0 taken 4 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 4 times.
✗ Branch 3 not taken.
4 return new ORefAutorelease(a->clone());
10805 }
10806 };
10807
10808 class ORefRemove : public UnaryOpcode
10809 {
10810 public:
10811 112 ORefRemove(Argument *A) : UnaryOpcode(A) {}
10812 std::string toString() const;
10813 54 Opcode* clone() const
10814 {
10815
2/4
✓ Branch 0 taken 54 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 54 times.
✗ Branch 3 not taken.
54 return new ORefRemove(a->clone());
10816 }
10817 };
10818
10819 class ORefCount : public UnaryOpcode
10820 {
10821 public:
10822 ORefCount(Argument *A) : UnaryOpcode(A) {}
10823 std::string toString() const;
10824 Opcode* clone() const
10825 {
10826 return new ORefCount(a->clone());
10827 }
10828 };
10829
10830 class OMarkTypeStack : public BinaryOpcode
10831 {
10832 public:
10833 8 OMarkTypeStack(Argument *A, Argument *B) : BinaryOpcode(A, B) {}
10834 std::string toString() const;
10835 3 Opcode* clone() const
10836 {
10837
3/6
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 3 times.
✗ Branch 5 not taken.
3 return new OMarkTypeStack(a->clone(), b->clone());
10838 }
10839 };
10840
10841 class OMarkTypeRegister : public BinaryOpcode
10842 {
10843 public:
10844 8 OMarkTypeRegister(Argument *A, Argument *B) : BinaryOpcode(A, B) {}
10845 std::string toString() const;
10846 4 Opcode* clone() const
10847 {
10848
3/6
✓ Branch 0 taken 4 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 4 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 4 times.
✗ Branch 5 not taken.
4 return new OMarkTypeRegister(a->clone(), b->clone());
10849 }
10850 };
10851 }
10852
10853 #endif
10854